0
votes

Comment déclarer Enums comme externe avec des valeurs par défaut

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);
    ...
}


4 commentaires

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


3 Réponses :


0
votes

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.

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.


0 commentaires

1
votes

Ce n'est peut-être pas exactement ce que vous voulez, mais pourrait être utile.

scoped_opaque_enum.hpp xxx

scoped_opaque_enum.cpp xxx

user_soe.cpp xxx


2 commentaires

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?



0
votes

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: xxx

et que vous voulez des valeurs numériques en suivant, je suggère d'écrire: < / p> xxx

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).


0 commentaires