【发布时间】:2020-12-02 16:46:42
【问题描述】:
我正在尝试从 Udacity 学习 c++。我需要澄清一下我的理解是否正确。所以代码如下。
井字游戏:
class Board
{//the class tracks the game and the winner
char positionsSelected[16];
char winner;
public:
//Constructor
Board();
int setPosition(int gridNumber, char user);
char* getPositions(void);
};
char* getPositions(void)
{//return all the positions on the board
return positionsSelected;
}
如果你看一下,成员函数char* getPositions(void) 是在类中声明的。
我知道假设可能真的很糟糕,但这就是我的思考过程和问题
-
由于您基本上是在阅读一系列字符,所以它必须是
char*。 -
为什么
getPositions(void)的参数一定要?可以和空括号()一样吗? -
如果函数原型是
char* getPositions(),是否意味着它返回了指针?我可以假设char*getPosition(void)的返回值指向char array(positionsSelected)。 -
如果我对 3 的假设是错误的。我可以这样写吗
char* getPositions(void){
char* pointers;
pointers = positionSelected;
return pointers;
}
任何建议或解释将不胜感激。
【问题讨论】:
-
无关:知道获胜者不是我要为井字游戏板分配的责任。对我来说,
board应该代表棋盘,并且完全不知道游戏逻辑。 -
请注意,通过在没有保护的情况下返回
positionsSelected,getPositions的调用者可以做任何他们想做的事情。与其将整个游戏板开放给公众监督,不如拥有char get_position(int x, int y)之类的功能,并且一次只允许用户看到一个角色。这样,游戏板的真实性质仍然是encapsulated。您可以完全重写棋盘的内脏,没有人会知道它现在将棋盘存储在魔法仙尘云中。