嘿,我正在用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);


抱歉,来回所有,但是即使包括了所有内容,我也将其缩小为声明错误:

最佳答案

声明错误,不知道发生了什么,但发现了一些问题here

并创建了一个新的文件和CollisionHandler实例,一切又恢复了。谢谢

09-29 21:01