Comment le mauvais est à utiliser void pointeur dans std::vector déclaration?

J'ai deux classes différentes, comme ci-dessous:

class text
{ };

class element
{ };

Et je veux les stocker dans le class 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);
    }
}

Je voudrais donc appeler le nœud de cette façon, le stockage, text et element's:

element div;
text msg;

node<element> wrapper(div);

wrapper.add_child(msg);

MODIFIER: Pour récupérer le contenu-je utiliser T typedef type; et convertir vide pointeur vers (type*).

Je sais que c'est pas très élégant ni fonctionnels, mais je ne peux pas comprendre ce qui est la façon correcte de le faire. Alors merci de me dire si cela est pratiquement acceptable et si elle n'est pas, comment le faire de manière appropriée.

Merci d'avance!

  • Que diriez-vous, tu sais... une classe de base?
  • La remarque ci-dessus: à moins que T est une primitive ou de type pointeur, il est peu probable qu'elle s'adapte à la taille d'un void*. Vous pourriez vouloir: add_child(T* node) ... push_back((void*)nœud); au lieu de cela.
InformationsquelleAutor Rizo | 2010-10-21