簡體   English   中英

c ++從child獲取父實例

[英]c++ get instance of parent from child

嘿我正在用c ++創建一個游戲作為學校項目,並試圖從子類中獲取父類的實例。 我創建了一個類CollisionHandler,它可以作為回調或事件監聽器。 這工作到最近,但在我的代碼中的一些更改后,我無法讓它再次工作....這樣做的正確方法是什么?

class CollisionHandler{
public:
    explicit CollisionHandler(){};
    ~CollisionHandler(){};
    virtual Collision checkWorldCollision(sf::FloatRect playerPos);
    virtual Collision checkPlayerCollision(sf::FloatRect attackPos);
};

實現CollisionHandler的類:

class Game : public CollisionHandler{
public:

    Game();
    ~Game();

    enum GameType{
        TYPE_LOCAL,
        TYPE_LAN
    };

    enum GameState{
        PLAYING,
        PAUSED,
        ENDED
    };

    void initialize(int width, int height, Map map, GameType type);
    void addPlayer(PlayerInfo& playerInfo, PlayerControls playerControls);
    RunState start(sf::RenderWindow& window);
    RunState resume(sf::RenderWindow& window);
    void pause();
    void exit();

    Collision checkWorldCollision(sf::FloatRect playerPos);
    Collision checkPlayerCollision(sf::FloatRect attackPos);

private:
    RunState run(sf::RenderWindow& window);
    GameState _currState;
    World _world;
    GameType _gameType;
    std::vector<Player> _players;
    int playerAmount;
};

然后我正在初始化一個使用Game作為CallbackHandler的類Player:

player.initialize(info, &game);

直到最近一切正常,但沒有任何東西應該影響這部分代碼。 得到此錯誤:

error: no matching function for call to ‘Player::initialize(PlayerInfo&, Game*)’
 player.initialize(info, &game);

也出現此錯誤:

error: ‘CollisionHandler’ has not been declared
 void setCollisionHandler(CollisionHandler* collisionHandler);

抱歉所有的來回,但我已經縮小它是一個聲明錯誤,即使一切都包括在內:

聲明錯誤,不知道發生了什么但在這里找到了一些東西

並創建了一個新文件和CollisionHandler實例,一切正常。 謝謝

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM