У меня есть два класса:
class Object {
public:
Object();
virtual void update();
virtual void draw();
private:
protected:
int x, y, tick;
}
и
class Unit : public Object {
public:
Unit();
void update();
private:
protected:
}
Затем я определяю конструкторы и функции в отдельных файлах .cpp.
Вот определения дляОбъект:
Object::Object() {
x = y = 0;
};
Object::update() {
tick ++;
};
Object::draw() {
// All my draw code is in here.
};
И Единица измерения:
Unit::Unit() : Object() {
};
Unit::update() {
Object::update();
// Then there's a bunch of movement related code here.
};
Все работает по отдельности, но я сталкиваюсь с проблемой при попытке вызвать функции из вектора.
vector<Object> objects;
Затем я делаю это в моем void main ():
for (int i = 0; i < objects.size(); i ++) {
objects[i].update();
objects[i].draw();
};
Это прекрасно все отрисовывает, но вызывает только объектную версию update (), а не версию, определенную производным классом.Нужно ли создавать вектор для каждого типа, который я извлекаю из класса Object, чтобы он работал, или есть другой способ вызова производных функций?
Заранее спасибо - Сеймор