ちょっと、C++で学校プロジェクトとしてゲームを作成していて、子クラスから親クラスのインスタンスを取得しようとしています。私はクラスを作成しましたCollisionHandlerの魔法使いは、コールバックまたはイベントリスナーとして動作します。これは最近まで働いていましたが、私のコードのいくつかの変更の後に、私はそれを再び働かせることができません....これを行う適切な方法は何ですか? CollisionHandlerを実装C++子から親のインスタンスを取得
class CollisionHandler{
public:
explicit CollisionHandler(){};
~CollisionHandler(){};
virtual Collision checkWorldCollision(sf::FloatRect playerPos);
virtual Collision checkPlayerCollision(sf::FloatRect attackPos);
};
クラス:
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;
};
が続いてCallbackHandlerとしてゲームを使用するクラスのプレイヤーを初期化しています:
player.initialize(info, &game);
すべてが最近までうまく働いたが、何もこの部分に影響を与えなかったはずですコードのこのエラーを取得:
error: ‘CollisionHandler’ has not been declared
void setCollisionHandler(CollisionHandler* collisionHandler);
すべてのバック申し訳ありませんと述べたが、私はすべてが含まれているにもかかわらず、宣言エラーと、それを絞り込んています:
error: no matching function for call to ‘Player::initialize(PlayerInfo&, Game*)’
player.initialize(info, &game);
はまた、このエラーを取得
それは少し不明だと思ったが、私の主な質問は、どのようにC + +の継承とinstanciationに対処するですか? – SlyOtis
あなたのポストにない 'Player'クラスのコンパイルエラーです。署名は発信者と着信者の間で一致しません。 – Franck
GameクラスをJustとInstance of CollisionHandlerに置き換えると、すべて正常に動作しますが、それが役立つ場合は、さらにコードを投稿できます:P – SlyOtis