我正在使用OpenGL(加上GLUT和GLUI)實現一個簡單的棋盤遊戲(突破)。多態 - 適當使用指向純抽象類的指針?
我在考慮實現一個Board
類,它將有一個vector<vector<Cell> >
作爲它的一個屬性。 Cell
代表遊戲板中的空間。它可以包含一個GameObject
。 GameObject
將是一個純粹的抽象類。例如,它要求其派生類實施render()
。可能衍生物類將是:
Blank
,表示一個空的空間Pawn
,代表的棋子(唯一可能的條突破)
該板將第一渲染板被渲染,然後遍歷每個Cell
,獲取其內容,併爲其中的每一個調用render()
。
我能想到的實現這一點的唯一可行的方法是使GameObject
在Cell
指針(board[y][x].getContents()->render()
,其中getContents()
返回GameObject*
)
這是做到這一點的最好方法是什麼?這是指針的適當用法嗎?
一個'指向一個純抽象class'是從來沒有確定。這通常也是不可能的。然而,你可以有一個類型爲(abstract_class *)的指針,指向派生類的非抽象實例,是的。 – sehe
@sehe - 你懂我的意思。 ':)' –