J'écris un interpréteur pour un langage de programmation simple, de type Lisp. Il va traiter le code en nœuds, tous ont des types et certains d'entre eux peuvent avoir des nœuds enfants dans un ordre indexé. En raison de la différence dans la nature de l'information, je ne peux pas utiliser la même longueur de type pour toutes les valeurs de nœud. Le nom de leur type est un type enum, mais la seule idée que j'ai pour le type de valeurs est void *
. Mais quand je l'utilise, je dois être très prudent, je pense. Je veux dire, je ne peux pas utiliser de destructeurs par défaut, je dois écrire un destructeur qui se soucie du type de nœud. Aussi, je devrais utiliser beaucoup de moulages, même pour accéder aux valeurs.Quelle est la meilleure façon de gérer les types inconnus dans une structure C++?
C'est ce dont je parle:
enum NodeType {/* Some node types */}
class Node
{
public:
Node(string input_code);
private:
NodeType type; // Having this I can know the type of value
void* value;
};
Y at-il une manière qui est plus sûr, fait un meilleur code, mais est toujours aussi efficace que l'utilisation de pointeurs vides?
Vous pouvez utiliser une hiérarchie de classes/un héritage. – melpomene