J'essaie d'introduire un alias pour une énumération dans un espace de noms dans un autre espace de noms. Bien que je puisse déclarer une variable du type aliasé, le compilateur (gcc 4.1.2) ne reconnaîtra aucune des valeurs de l'énumération.Typedefs et enums C++
namespace A
{
enum a { One = 1, Two = 2 };
}
namespace B
{
typedef enum A::a b;
};
A::a a_value = A::One; // Pretty standard
B::b b_value = B::One; // Does not work
B::b c_value = A::One; // Clearly B is a typedef for A
int main (int argc, const char *argv[])
{
return 0;
}
L'erreur du compilateur est
test.cc:12: Erreur: 'One' est pas un membre de 'B'.
essayez d'utiliser A :: a comme b; inside namespace B (Ou quelque chose comme ça). (C'est pourquoi c'est un commentaire, et non une réponse.) – jmucchiello
C'est parce que 'One' n'est ** pas ** un membre de' B' ... –
C'est un très vieux compilateur. Avez-vous vraiment besoin d'utiliser cette version? – stefan