안녕하세요, 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: no matching function for call to ‘Player::initialize(PlayerInfo&, Game*)’
player.initialize(info, &game);
이 오류 점점 : 등 모든 뒷면에
이error: ‘CollisionHandler’ has not been declared
void setCollisionHandler(CollisionHandler* collisionHandler);
죄송합니다,하지만 난 모든 것이 포함되어있는 경우에도 신고 오류로 그것을 좁혀 :
그래서 조금 명확하지 않지만 내 주요 질문은 어떻게 상속과 instanciation C + +로 처리하는 것입니다? – SlyOtis
귀하의 게시물에없는'Player' 클래스의 컴파일 오류입니다. 서명은 발신자와 수신자가 일치하지 않습니다. – Franck
Game 클래스를 Just와 CollisionHandler의 인스턴스로 대체하면 모든 것이 잘 작동하지만 도움이된다면 내 코드를 더 게시 할 수 있습니다. P – SlyOtis