Wie schlecht ist es, den Void-Zeiger in der std :: vector-Deklaration zu verwenden?

Ich habe zwei verschiedene Klassen wie folgt:

class text
{ };

class element
{ };

Und ich möchte sie im @ speicheclass 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);
    }
}

So würde ich den Knoten auf diese Weise aufrufen, um beide zu speichern,text undelement 's:

element div;
text msg;

node<element> wrapper(div);

wrapper.add_child(msg);

BEARBEITE: Um den Inhalt zurückzuerhalten, den ich benutzeT typedef type; und Leerenzeiger in @ konvertier(type*).

Ich weiß, dass das weder sehr elegant noch funktional ist, aber ich kann einfach nicht herausfinden, wie das richtig gemacht wird. Sagen Sie mir bitte, ob dies praktisch akzeptabel ist und ob dies nicht der Fall is

Danke im Voraus

Antworten auf die Frage(12)

Ihre Antwort auf die Frage