[英]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.