2013-06-18 77 views
1

我正在做TD遊戲,我不知道是否有任何方法來保持來自不同類的數組對象。喜歡碼下面的東西C++保持數組中類的對象

class A(base class){ 
    int x,y; 
} 
class B:A{ 
} 
class C:A{ 
} 

main(){ 
A a; 
B b; 
C c; 
array[3]; 
array[0] = B b[12]; 
array[1] = C c[12]; 
foo(array[1]); 
} 

什麼,我想實現的就是對象(在我的地圖小怪)未做功能很多ifs'.I的」只是想避免類似下面的代碼的功能。

if(All from B is dead) 
foo(C c[all elements]) 
else if(All from C is dead) 
foo(D d[all elements]); 
etc. 

並做了類似第一代碼的事情。

Thx in Advice。

Edzio

+0

看起來像你想使用多態。 – chris

回答

0

可以近似用std::vector<std::unique_ptr<Base>>或多態性的集合。 std::vector<std::shared_ptr<Base>>

請注意,矢量的複製語義不好,但您可能根本不會在該級別上進行復制。如果需要的話,最簡單的方法就是創建自己的智能指針並像上面那樣使用它。

更重要的方法是編寫一個真正的,一流的多態容器。

+0

我有一個解決方案,但我不確定是否足夠好。只是反對其他班的班級 - http://pastebin.com/EDuu4yQC 您對此有何看法?可以爲第一個客觀的遊戲,或者更好地從開始做'艱難的方式'? – Edzio94

+0

代碼審查SE可能是一個更好的地方,要求 –

0

你可以看看支持多態的各種STL容器,並選擇適合你的需求。在這種情況下,正如@Balog Pal所述,std :: vector可能是最好的選擇。

下面是關於你的C++ STL容器選項的一些質量信息:

http://www.cplusplus.com/reference/stl/

+1

如果他可以使用'std :: vector',那麼他也可以使用數組 – newacct