En reprenant ton exemple de fruits et de meubles, voici une idée pour te passer des enum:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
|
class ID
{
long m_id; // pour ne pas manquer de place, mais bon...
... // code pour assurer l'unicité des ID
};
Singleton //juste pour éviter d'avoir plusieurs listes
{
std::map<ID,Objet *> noms;
... //code pour rendre le singleton unique
};
class Objet
{
ID identifiant;
}; |
En fonction de la granularité souhaitée, tu peux créer une arborescence aussi complexe que tu le souhaites: tu peux faire une classe Fruit héritant de Objet, avec une classe Banane héritant de Fruit.
Ou si tu peux te passer de la description précise de Banane (parce que le comportement est le même que celui de fraise, ou de chaise, par exemple, en fonction du cahier des charges) te contenter de mettre juste le mot "banane" dans un string (bien qu'en général, je préfère les fruits de mer dans les string
)
D'ailleurs, ce n'est pas valable que pour le nom, mais pour toutes les propriétés (genre type: fruit ou meuble?) : si tu n'as pas un comportement spécifique qui dépende de la propriété, rien n'empêche de le mettre dans une variable. Au final, tant que tu as ton ID unique...
Partager