2014-10-09 4 views
-2

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을 제로 확인하십시오처럼

+0

무엇이 오류 메시지입니까? –

+0

파생 된 클래스 메서드를 대신 호출하려는 경우 기본 클래스 메서드가 가상임을 확인하는 데 필요한 기본 클래스 포인터를 사용하고 있으므로 잊지 마십시오. – Discordanian

+1

배열 대신에'std :: vector'를 사용하는 것은 어떻습니까? 그렇게하면 'componentCount'가 필요 없으며 항목을 쉽게 반복 할 수 있습니다. – crashmstr

답변

0

1) 당신은 아마 의미 :

배열을 사용하여 GameComponent 클래스의 멤버 함수입니다.

+0

각하 감사합니다 :-) – nor

1

추가 방법을 찾아야한다. 디스플레이는 인 경우,> 표시()가 작동합니다 -

void Game::Add(GameComponent* comp) 
{ 
    components[componentCount++] = comp; 
} 

2) 구성 요소 [0] 다음을 작성하는

components[i]->DoSomething(); 
+0

'comp'는 함수 인수로 선택한 이름입니다. 이는 해당 기능이 인식되지 않음을 의미합니다. 신고서의 서명이 동일한 지 확인하십시오. – egur

+0

감사합니다 선생님 :-) – nor

관련 문제