3 개의 클래스가 있습니다. DrawGameComp '및'GameComp '여기서'GameComp '은'DrawGameComp '의 기본 클래스입니다. Game 클래스에서 포인터를 배열하고 있는데, 이는 제어 클래스입니다. ' GameComp * 구성 요소 []; 주체에서 GameComp 및 DrawGameComp의 새로운 개체를 GameComp 유형의 포인터 배열에 추가하여 Game 및 Store의 동적 인스턴스를 만들어야합니다.포인터의 배열에 다른 클래스의 객체를 저장하는 방법
Game Game1(2);
Game1.Add(new GameComponent);
Game1.Add(new DrawableGameComponent);
주 부분에서이 작업을 수행했습니다. 왜냐하면 메인에서 나는 매개 변수로 전달 객체를 추가해야합니다. 이러한 객체를 저장할 때 첫 번째 객체에는 id 1을 할당하고 두 번째 객체에는 id 2를 할당해야합니다. 나는 그것을 어떻게 포함시킬 수 있는가.
void Game::Add(GameComponent*)
{
components[0]=GameComp;
componentCount++;
}
를 다음 그러나 그것은 나에게 오류를 줄 나의 게임 클래스의 추가() 함수입니다. 나는 그렇게 열심히 노력했다. 그러나 나는 할 수 없었다. 또한 배열에서 이러한 객체의 Display() 멤버 함수를 호출하려면 어떻게해야합니까? 이쪽이야? 구성 요소 [0] -> Display();
void Game::Add(GameComponent* comp)
{
components[componentCount++] = comp;
}
당신이 생성자에서 componentCount
을 제로 확인하십시오처럼
무엇이 오류 메시지입니까? –
파생 된 클래스 메서드를 대신 호출하려는 경우 기본 클래스 메서드가 가상임을 확인하는 데 필요한 기본 클래스 포인터를 사용하고 있으므로 잊지 마십시오. – Discordanian
배열 대신에'std :: vector'를 사용하는 것은 어떻습니까? 그렇게하면 'componentCount'가 필요 없으며 항목을 쉽게 반복 할 수 있습니다. – crashmstr