【发布时间】:2019-08-10 11:55:38
【问题描述】:
我有一个类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()。
编辑:
我试过了,但我还需要从向量中创建一个案例...实际上,我的 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持有一个函数指针或std::function,它可以在需要时调用,然后让Game在填充时分配doSomething()std::vector.
标签: c++ relationship class-design ownership-semantics