C++ 在对象之间共享变量。

标签 c++ class

我遇到了一个小问题,我希望两个不同的类能够共享另一个类对象并对其进行更改。

我有一个 HumanPlayer 类、一个 ComputerPlayer 类和一个 Board 类。这两个玩家类需要能够与一个棋盘类进行交互。我以为我可以将对同一个 Board 对象的引用传递给每个类,但它似乎没有按照我想要的方式工作。这是主要内容的一部分,我将尽我所能描述正在发生的事情:

// main.cpp

    Board *board2 = new Board();
    board2->setBoardSize(5); 
    board2->initPits(); 

    HumanPlayer firstPlayer(*board2, *menu, menu->askForFirstTurn(), true); 

    firstPlayer.removeFromPit(3);  

    board2->showBoard();

firstPlayer.removeFromPit(3); 应该只是将棋盘类中数组中的一个值设置为零。它就是这样做的。如果我要从 FirstPlayer 类的代码中显示棋盘,它会显示更改。但是当我调用 board2->showBoard() 时,就好像什么都没有改变一样。还是原来没变的板子。我真正想要发生的是让我的 firstPlayer 和 secondPlayer 类在一个共享的棋盘对象上工作。我只是不确定现在如何正确实现。

谢谢大家的帮助。如果您需要更多信息,请与我们联系。

最佳答案

听起来您正在复制棋盘对象而不是通过引用传递它。您的播放器类的构造函数应如下所示:

class Player
{
public:
    Player(Board& board) // REFERENCE TO Board
       : the_board_(board) // initialize the reference
    {
    }

protected:
   Board& the_board_;  // REFERENCE to Board
};

如果您在任何地方(在构造函数签名中或在类成员变量中)缺少 & 运算符,那么您将制作一份将在您的类中使用的电路板拷贝。

关于C++ 在对象之间共享变量。,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7457642/

相关文章:

c++ - 错误 : prototype does not match any in class

c++ - 指向模板函数的函数指针

C++ 函数返回在堆栈上创建的对象

Delphi 类变量在调用类析构函数之前超出范围

c++ - 类成员函数返回的任意值

php - 是否可以在 php 中动态定义类属性?

php - 不在对象上下文调用类中的方法时使用 $this

c++ - 数组变量返回意外值

c++ - 如何用 vstring 替换 std::string?

任何基数的 C++ 乘法