Quão ruim é usar o ponteiro nulo na declaração std :: vector?
Eu tenho duas classes diferentes, como abaixo:
class text
{ };
class element
{ };
E eu quero armazená-los noclass node
:
template <typename T>
class node
{
T cargo;
std::vector<void*> children;
node(T cargo) : cargo(cargo)
{ };
void add_child(T node)
{
this->children.push_back((void*) node);
}
}
Então, eu chamaria o nó dessa maneira armazenando ambos,text
eelement
:
element div;
text msg;
node<element> wrapper(div);
wrapper.add_child(msg);
EDITAR: Para recuperar o conteúdo que eu usoT typedef type;
e converter ponteiro nulo em(type*)
.
Sei que não é muito elegante nem funcional, mas simplesmente não consigo descobrir qual é a maneira correta de fazer isso. Então, diga-me se isso é praticamente aceitável e, se não for, como fazer isso da maneira correta.
Desde já, obrigado!