我正在研究一個基於OpenGL的遊戲,並且在我尋找將實體信息傳遞給渲染和網絡功能的強大方法時出現此問題。爲了多態性而使用矢量指針 - C++
事情是這樣的:
vector <DynamicEntity> DynamicEntities;
vector <StaticEntity> StaticEntities;
vector <Entity> *Entities;
Entities.push_back(&DynamicEntities);
Entities.push_back(&StaticEnt);
Graphics.draw(Entities);
Server.bufferData(Entities);
的唯一信息Graphics.draw和Server.bufferData需要由實體,這既DynamicEntity和StaticEntity繼承遏制。
我知道這會工作:
vector <Entity*> Entities;
for(uint32_t iEntity=0;iEntity<iNumEntities;iEntity++)
{
Entities.push_back(&DynamicEntities[iEntity])
}
//(ad nauseam for other entity types)
,但似乎非常低效的,並且必須考慮到不斷變化的實體的數量隨着比賽的進行。我對數據結構的基礎知識相對較少;所以這可能是一個愚蠢的問題,但我會感謝一些見解。