Je veux créer une énumération en C ++ 11 de manière à ce que je puisse déclarer une valeur de constantes dans un code source tout en les déclarant dans un fichier d'en-tête:
A.HPP P>
#include "A.hpp" int classA::method() { ... check(ABCType.HOUSE); ... }
3 Réponses :
Enum n'est pas une liste de constantes avec différentes valeurs (définies ultérieurement). Enum définit des valeurs pour les articles à la déclaration uniquement. Pour votre exemple, la «voiture» aura une valeur '0' (et 'House' est 2), etc. P>
Pour vous vos besoins, vous pouvez créer une classe avec des constantes ou des fonctions qui renvoient des valeurs. Vous faites des cours d'enfant avec des valeurs supplémentaires, etc. p>
Ce n'est peut-être pas exactement ce que vous voulez, mais pourrait être utile.
scoped_opaque_enum.hpp em> p> scoped_opaque_enum.cpp em> p> user_soe.cpp em> p>
Merci mais la liste d'externe ira longtemps si j'ai besoin de nombreuses énumes définies - pour mon besoin, il y a environ 20-30 valeurs d'énumération, puis de définir
@Programmer Oui, mais ce ne serait pas différent de votre idée d'origine, n'est-ce pas?
Votre propre exigence n'est pas un problème, c'est le seul moyen de C ++. Une fois que vous avez défini une classe ENUM, les valeurs sont considérées comme des constantes considérées.
Si vous envisagez: p> et que vous voulez des valeurs numériques en suivant, je suggère d'écrire: < / p> De cette façon, le chat est défini comme un plus élevé que quelque chose et chien comme un plus élevé que le chat (toujours prev + 1). P> P>
Enums ne peut pas être partiellement défini.
Comment puis-je atteindre l'objectif?
@Programmer en utilisant quelque chose d'autre que l'ENUMS. Les constantes de l'énumérateur ne sont pas des objets externes avec un lien.
Qu'essayez-vous d'atteindre? J'ai le sentiment que vous essayez de porter un concept d'une langue à une autre