如何从不同的类中获取函数来调用在 Main 中声明的对象?

How can i get a function from a different class to call an object declared in Main?

本文关键字:调用 Main 对象 声明 获取 函数      更新时间:2023-10-16

我正在制作一个 tictactoe 游戏,并希望玩家转身访问我在 main 和其他函数中声明的对象的功能,我该怎么做?

void Player1Turn::player1Turn() {
char num;
cin >> num;
if (num == '1')
{
board[0][0] = { xo1 };
}

例如,我怎样才能让棋盘更改游戏板的值?

int main()
{
Setup setup;
Gameboard gameboard;
Player1Turn player1turn;
setup.setup();
gameboard.printBoard();
player1turn.player1Turn();
return 0;
}

如果这还不够,我可以提供更多

可以将对特定Gameboard的引用添加为player1Turn成员函数的参数。因此,假设您的Gameboard类具有board[][]成员,它将如下所示:

void Player1Turn::player1Turn(Gameboard& gb)
{
char num;
cin >> num;
if (num == '1')
{
gb.board[0][0] = { xo1 }; // Exact code will depend on your "Gameboard" definition.
}
}

你从main那里打来的电话是这样的:

int main()
{
Setup setup;
Gameboard gameboard;
Player1Turn player1turn;
setup.setup();
gameboard.printBoard();
player1turn.player1Turn(gameboard); // Argument is the Gameboard to work on.
return 0;
}

不过,还有许多其他方法可以实现这一点,但是如果没有各种类的更多详细信息,我真的无法提出更多/更好的建议。另一种方法,正如 Nico Schertler 在评论中所建议的那样,是在Player1Turn类中将Gameboard的引用作为"数据"成员,并在其构造函数中传递引用。

请随时要求进一步澄清和/或解释。

PS:您使用"Player1Turn"(用于类(,"player1Turn"(用于成员函数(和"player1turn"(用于main中的特定对象(这三个名称极易出现输入错误!你应该认真考虑一个更好的命名方案!!