2014-12-11 94 views
1

我有一個std::vector<Character*>將包含的Character幾種不同的派生類,我將只需要調用Enemy1Enemy2,並Player對這個問題的目的。我見過其他情況下,有人有一個陣列,如Character characters[30],但因爲我需要多態性,我不認爲這會對我有用(我可能是錯的)。C++ - 緩存對象

本質上我的問題是實現,我如何設置/緩存多個字符重複使用這種方式?我在看這個(http://gameprogrammingpatterns.com/object-pool.html),我不確定載體是否可以以同樣的方式工作。例如,如果向量中的一個對象已被例示爲new Enemy1(),我可以稍後覆蓋它並將其設置爲new Enemy2()?我應該爲每個敵人類型分別有不同的向量/陣列嗎?

+0

可能的參考:http://channel9.msdn.com/Events/GoingNative/2013/My-Favorite-Cpp-10-Liner – 2014-12-11 03:23:43

+1

可能更好的方法是'std :: vector >''或'std :: vector >'。請參見[動態內存管理](http://en.cppreference.com/w/cpp/memory)。 – 2014-12-11 03:25:19

+0

我觀看了實際上並不差的視頻,但並沒有爲不存在的對象調用緩存,但仍然需要與使用'new'實例化對象並將其插入地圖一樣的努力? – 2014-12-11 04:06:28

回答

0

可以從std::vector<Character*>訪問您的角色。但是爲了爲許多可能的字符類型創建數據池,您需要單獨的向量,通常爲*。

看看這個Related question我最近問。我得到了這個article參考你可能會覺得有用。

*注:我相信,有一些技巧,只要它們在內存中具有相同的大小,就可以將各種類型存儲在一個向量中。