c ++从子对象中获取父对象的实例
c++ get instance of parent from child
嘿,我正在用 C++ 创建一个游戏作为学校项目,并试图从子 class 获取父 class 的实例。我创建了一个 class CollisionHandler 作为回调或事件监听器。这直到最近才有效,但在我的代码进行了一些更改后,我无法让它再次工作....执行此操作的正确方法是什么?
class CollisionHandler{
public:
explicit CollisionHandler(){};
~CollisionHandler(){};
virtual Collision checkWorldCollision(sf::FloatRect playerPos);
virtual Collision checkPlayerCollision(sf::FloatRect attackPos);
};
Class 实施 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;
};
然后正在初始化 class Player,它使用 Game 作为 CallbackHandler:
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);
很抱歉来来回回,但我已将其缩小为声明错误,即使所有内容都包括在内:
声明错误,不知道发生了什么但发现了一些东西here
并创建了一个新文件和 CollisionHandler 实例,一切又恢复正常了。谢谢
嘿,我正在用 C++ 创建一个游戏作为学校项目,并试图从子 class 获取父 class 的实例。我创建了一个 class CollisionHandler 作为回调或事件监听器。这直到最近才有效,但在我的代码进行了一些更改后,我无法让它再次工作....执行此操作的正确方法是什么?
class CollisionHandler{
public:
explicit CollisionHandler(){};
~CollisionHandler(){};
virtual Collision checkWorldCollision(sf::FloatRect playerPos);
virtual Collision checkPlayerCollision(sf::FloatRect attackPos);
};
Class 实施 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;
};
然后正在初始化 class Player,它使用 Game 作为 CallbackHandler:
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);
很抱歉来来回回,但我已将其缩小为声明错误,即使所有内容都包括在内:
声明错误,不知道发生了什么但发现了一些东西here
并创建了一个新文件和 CollisionHandler 实例,一切又恢复正常了。谢谢