Próbuję wprowadzić alias dla wyliczenia w jednym obszarze nazw do innego obszaru nazw. Chociaż mogę zadeklarować zmienną typu alias, kompilator (gcc 4.1.2) nie rozpozna żadnej z wartości wyliczenia.C++ typedefs i enums
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;
}
Błąd kompilatora jest
test.cc:12: error: 'One' nie jest członkiem 'B'.
spróbuj użyć A :: a as b; wewnątrz przestrzeni nazw B (lub coś w tym stylu). (To dlatego jest to komentarz, a nie odpowiedź.) – jmucchiello
To dlatego, że 'Jeden' jest ** nie ** członkiem' B' ... –
To jest naprawdę stary kompilator. Czy naprawdę potrzebujesz korzystać z tej wersji? – stefan