我在C++初學者,爲我創造想什麼,我有這個遊戲項目是通用的「遊戲對象」元素的集合,每個與更新虛擬方法和Draw ......然後有類繼承從它自己的這種方法定義,以便更新世界,當我只需要通過一個集合不斷循環......抽象類/不同類的類的集合?
現在看來似乎是不可能的矢量持有抽象類的集合,我試過而是保持繪製和更新方法虛擬,但如果我創建Enemy : public GameObject
實例並將其添加到Vector<GameObject>
並調用更新,然後我得到各種鏈接器:未定義的符號錯誤....
我不知道,有som我沒有把握......我相信這是許多應用程序需要的一種設置......你對此有何建議?我應該嘗試一種不同於Vector的收集器嗎?
非常感謝您
編輯:
針對下面的回覆,我想:
class GameObject{
....
virtual void update(float t):
....
}
//-------------------------------------------
class Enemy: public GameObject{
.....
void update(float d);
.....
void Enemy::update(float d){
//Have a breakpoint here
}
//-------------------------------------------
class World{
...
vector<GameObject*> gameObjects;
...
}
//-------------------------------------------
class Level{
World levelWorld;
....
Level(){
levelWorld = new World();
}
...
Enemy* en = new Enemy();
levelWorld->visibleObjects.push_back(en);
levelWorld->visibleObjects.at(0)->update(0);
}
而我得到的,因爲我之前做過:
Error 25 error LNK2001: unresolved external symbol "public: virtual void __thiscall Enemy::update(float)" ([email protected]@@[email protected])
Error 28 error LNK2001: unresolved external symbol "public: virtual void __thiscall GameObject::update(float)" ([email protected]@@[email protected])
....
有什麼建議嗎?
確實含有'無效敵人::更新(浮動)文件'被編譯並與二進制聯繫。 – crazyjul