OpenGL (GLUT 및 GLUI 포함)을 사용하여 간단한 보드 게임 (Breakthrough)을 구현하고 있습니다.다형성 - 순수 추상 클래스에 대한 포인터의 적절한 사용?
Board
클래스를 구현하려고합니다.이 클래스의 속성 중 하나는 vector<vector<Cell> >
입니다. Cell
은 게임 보드의 공간을 나타냅니다. GameObject
을 포함 할 수 있습니다. GameObject
은 순수 추상 클래스입니다. 예를 들어 파생 클래스가 render()
을 구현하도록 요구합니다. 가능한 유도체 클래스가 될 것이다 폰 (침투에 유일하게 가능한 부분)를 나타내는 빈 공간
Pawn
나타내는
Blank
,
보드는 제 보드를 렌더링함으로써 렌더링되는 각 Cell
을 반복하면서 해당 내용을 가져와 각각에 대해 render()
을 호출합니다. 내가 이것을 달성하기 위해 생각할 수있는
유일한 가능한 방법이이 작업을 수행하는 가장 좋은 방법입니다
(getContents()
가 GameObject*
을 반환 board[y][x].getContents()->render()
등) Cell
에서 GameObject
포인터를하고있다? 이것은 포인터의 적절한 사용법입니까?
순수한 추상적 class'에 대한'포인터가 결코 괜찮습니다. 또한 일반적으로 불가능합니다. 그러나 유형 (abstract_class *)의 포인터는 파생 된 것의 비 추상적 인 인스턴스를 가리킬 수 있습니다. – sehe
@sehe - 당신이 의미하는 바를 얻었습니다. ':)' –