我有一个类 Game
,它的参数是另一个类 Case
的 std::vector
。在这个类 Case
中,我有一个函数,当我们点击它时它会告诉我。当按下 Case
时,我想向拥有 Cases
的对象 Game
发送信号。
在 game.h 中:
class Game
{
public:
Game();
void doSomething();
private:
std::vector<Case> board;
};
在 case.h 中:
class Case
{
public:
Case(Game &g);
void functionWhichIsCalledWhenCaseIsPressed();
private:
Game game;
};
因此,当调用 functionWhichIsCalledWhenCaseIsPressed()
时,我想调用函数 doSomething()
。
编辑:
我试过了,但我还需要从 vector 中创建一个案例...实际上,我的 Game.h 中有一个 Case c;
...而且我无法初始化它。 .. 我试过 c = Game(*this);
但我有一个错误:
error: object of type 'Case' cannot be assigned because its copy assignment operator is implicitly delete
编辑:谢谢,完成了!
最佳答案
为此,您需要启用从 Case
到它所属的 Game
的导航。一种方法是在每个 Case 中保留一个指向所有者的引用或指针,并在构造时初始化此引用:
class Game;
class Case
{
public:
Case(Game& x);
void functionWhichIsCalledWhenCaseIsPressed();
private:
Game &game; // <<<<-------------- reference to owner
};
有了这些先决条件,你可以很容易地调用父函数:
Case::Case(Game& x) : game(x){
}
void Case::functionWhichIsCalledWhenCaseIsPressed() {
cout<<"Clicked"<<endl;
game.doSomething(); //<<<===== invoke the function of the owner
}
这需要游戏初始化棋盘并向构造函数提供正确的参数:
Game::Game() {
for (int i=0; i<10; i++)
board.push_back(Case(*this));
}
void Game::doSomething() { cout<<"click on game"<<endl; }
关于c++ - 访问 "parent"或 "owner"函数 C++,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55249751/