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

标签 c++

我正在制作一个 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;
}

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

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

PS:您使用的三个名称“Player1Turn”(针对类)、“player1Turn”(针对成员函数)和“player1turn”(针对 main 中的特定对象)是极度容易出现打字错误!你应该认真地考虑一个更好的命名方案!!

关于c++ - 我如何从不同的类中获取函数来调用在 Main 中声明的对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59380398/

相关文章:

c++ - 用 C++ 编写一个非常简单的词法分析器

c++ - 添加行主矩阵和列主矩阵

c++ - 使用或匹配正则表达式

c++ - 在同一内存地址不需要的对象创建

c++ - 为什么变量不更新

c++ - 对在 C++ 中测试接口(interface)实现方法感到困惑。我该如何测试它?

c++ - 不同的函数有不同的地址吗?

c++ - 事件对象和条件变量的区别

c++ - 添加目录路径 Windows 8.1

共享库中的 c++ 静态变量和更好的可见性