acessar um membro de um objeto filho quando ele está em um vetor de base [duplicado]
Jan 20 2021
Atualmente estou tendo problemas para acessar um membro de um objeto filho quando ele está em um vetor de base, eu sei que é um problema de divisão de objeto, estou tentando usar a conversão dinâmica, mas sou um iniciante e não tenho certeza sobre a sintaxe ou como usar isso, qualquer ajuda seria 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
Respostas
Jeffrey Jan 20 2021 at 07:47
A primeira técnica é contar com funções virtuais:
class Base
{
public:
virtual int doStuff();
}
Class Derived : public base
{
public:
virtual int doStuff();
}
Em seguida, items[0]->doStuff()
chamará a versão derivada.
A segunda técnica é reduzir:
dynamic_cast<Derived*>(items[0]);
Isso lhe dará um nullptr
ou seu ponteiro de objeto derivado. O problema é que você precisará adicionar uma função virtual para que isso funcione.
O que significa um erro “Não é possível encontrar o símbolo” ou “Não é possível resolver o símbolo”?
George Harrison ficou chateado por suas letras de 'Hurdy Gurdy Man' de Donovan não terem sido usadas