Llamando funciones de clase derivadas desde un vector (c ++)
Tengo dos clases:
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:
}
Luego defino los constructores y las funciones en archivos .cpp separados.
Aquí están las definiciones de Objeto:
Object::Object() {
x = y = 0;
};
Object::update() {
tick ++;
};
Object::draw() {
// All my draw code is in here.
};
Y Unidad:
Unit::Unit() : Object() {
};
Unit::update() {
Object::update();
// Then there's a bunch of movement related code here.
};
Todo funciona bien individualmente, pero me encuentro con un problema cuando intento llamar a funciones desde un vector.
vector<Object> objects;
Luego hago esto en mi vacío main ():
for (int i = 0; i < objects.size(); i ++) {
objects[i].update();
objects[i].draw();
};
Esto dibuja todo bien, pero solo llama a la versión Object de update () no a la versión definida por la clase derivada. ¿Tengo que hacer un vector para cada tipo que obtengo de la clase Object para que funcione, o hay otra forma de llamar a las funciones derivadas?
Gracias de antemano - Seymore