Я новичок в C ++, для этого игрового проекта, который я создаю, я хотел бы получить коллекцию универсального элемента "GameObject", каждый с виртуальными методами для Update и Draw ... затем есть классыунаследовав его от своих собственных определений таких методов, чтобы при обновлении мира мне нужно было оставить только одну коллекцию для циклического перебора ...
Кажется, что в Vector невозможно содержать коллекцию абстрактных классовВместо этого я попытался сохранить методы Draw и Update виртуальными, но затем, если я создаю экземпляр Enemy : public GameObject
и добавляю его в Vector<GameObject>
и вызываю update, я получаю все виды компоновщика: неопределенные ошибки символов ....
Я не знаю, есть кое-что, чего я не понимаю ... Я уверен, что это тот тип настройки, который потребуется многим приложениям .... Какой ваш совет по подходу к этому?Должен ли я попробовать другой тип сборщика, чем 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)" (?update@Enemy@@UAEXM@Z)
Error 28 error LNK2001: unresolved external symbol "public: virtual void __thiscall GameObject::update(float)" (?update@Object3DS@@UAEXM@Z)
....
Есть предложения?