Ver Mensaje Individual
  #1 (permalink)  
Antiguo 02/02/2014, 12:57
erikat
 
Fecha de Ingreso: mayo-2010
Mensajes: 12
Antigüedad: 13 años, 11 meses
Puntos: 0
Exclamación Error C++ al intentar pasar objetos de clase deriavada a clase base

Muy buenas! No se si el titulo del tema explique bien el error pero tratare de explicarlo lo mejor que pueda.

Tengo una clase base llamada Vehicle y una clase derivada llamada scooter. Posteriormente creo varios objetos de la clase scooter y, me pide el ejercicio, que cree un vector de punteros a objetos de tipo Vehicle y que asigne los punteros a los objetos scooter.

Dicho esto, aqui esta el codigo:

class Vehicle{
protected:
string brand, plate; //Deberia ser Private
public:
Vehicle(string b, string p) : brand (b), plate (p){}
string get_brand(){
return brand;
}
string get_plate(){
return plate;
}
void set_brand (string b1){
brand = b1;
}
virtual void print();
};

//Task 5

class Scooter : public Vehicle{
public:
Scooter(string b, string p) : Vehicle(brand,plate){}
virtual void print(){
cout << "Scooter " << brand << ", Plate: " << plate << endl;
}
};

int main(){
int n = 5;

Vehicle *vehicle[3*n+2];
int i = 0;

for (i=0; i<=n; i++){

ostringstream convert,convert1,convert2;
convert << "DU-CC" << n;
Scooter sc("Honda 110cc",convert.str());
vehicle[i] = static_cast<Vehicle*> (&sc);

}
return 0;
}


La verdad que estoy en proceso de aprendizaje y primera vez que tengo que trabajar con clases bases y derivadas, por lo que no se si lo que estoy haciendo es correcto. Estando asi, el error que me da es

undefined reference to ´vtable for Vehicle´