acceder a un miembro de un objeto secundario cuando está en un vector base [duplicado]
Actualmente tengo problemas para acceder a un miembro de un objeto secundario cuando está en un vector base, sé que es un problema de corte de objetos, estoy tratando de usar la conversión dinámica pero soy un principiante y no estoy realmente seguro de la sintaxis o cómo usar ello, cualquier ayuda sería apreciada pseudocódigo:
class Base {}
Class Derived : public base {
bool A
}
std::vector<Base*> items;
Item* i = new Derived(constructor);
items.push_back(i);
// items[0]->A isnt accessible due to object slicing
Respuestas
Jeffrey
La primera técnica es confiar en funciones virtuales:
class Base
{
public:
virtual int doStuff();
}
Class Derived : public base
{
public:
virtual int doStuff();
}
Luego, items[0]->doStuff()
llamará a la versión derivada.
La segunda técnica es abatir:
dynamic_cast<Derived*>(items[0]);
Esto le dará nullptr
o su puntero de objeto derivado. El problema es que necesitará agregar una función virtual para que esto funcione.