访问“父”或“所有者”函数C ++

时间:2019-03-19 20:49:32

标签: c++ relationship class-design ownership-semantics

我有一个类Game,该类具有另一个类std::vector的{​​{1}}。在此类Case中,我有一个函数告诉我何时单击它。而且我想在按下Case时向拥有Game的对象Cases发送信号。 在game.h中:

Case

如果是case.h:

class Game
{
public:
    Game();
    void doSomething();

private:
    std::vector<Case> board;
};

因此,当调用class Case { public: Case(Game &g); void functionWhichIsCalledWhenCaseIsPressed(); private: Game game; }; 时,我想调用函数functionWhichIsCalledWhenCaseIsPressed()。 编辑:

我尝试过,但是我还需要从向量中创建一个案例...实际上,我的Game.h中有一个doSomething(),但是我无法初始化...我尝试了{ {1}}但我有一个错误:

Case c;

编辑:谢谢,完成了!

1 个答案:

答案 0 :(得分:1)

为此,您需要启用从 Stopped LAT LNG DAY 401218 True 22.6874 113.9487 2018-10-15 401219 True 22.6874 113.9487 2018-10-15 401220 True 22.6874 113.9487 2018-10-15 401221 True 22.6873 113.9487 2018-10-15 401222 True 22.6869 113.9483 2018-10-15 401223 True 22.6863 113.9479 2018-10-15 401224 True 22.6859 113.9476 2018-10-15 401225 True 22.6854 113.9471 2018-10-15 401226 True 22.6849 113.9468 2018-10-15 401227 True 22.6844 113.9463 2018-10-15 401228 True 22.6841 113.9457 2018-10-15 401229 True 22.6839 113.9449 2018-10-15 401230 True 22.6838 113.9438 2018-10-15 401231 True 22.6837 113.9428 2018-10-15 401232 True 22.6837 113.9417 2018-10-15 401233 True 22.6836 113.9409 2018-10-15 401234 True 22.6835 113.9400 2018-10-15 401235 True 22.6833 113.9392 2018-10-15 401236 True 22.6832 113.9387 2018-10-15 401237 True 22.6832 113.9384 2018-10-15到其拥有的Case的导航。一种方法是在每种情况下保留一个引用或指向所有者的指针,并在构造时初始化该引用:

Game

有了这些先决条件,您可以轻松地调用父级的函数:

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
}

Online demo