Ich versuche, einen Alias für eine Enumeration in einem Namespace in einem anderen Namespace einzuführen. Während ich eine Variable vom Alias-Typ deklarieren kann, erkennt der Compiler (gcc 4.1.2) keinen der Werte der Enumeration.C++ typedefs und 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;
}
Der Compiler-Fehler ist
test.cc:12: Fehler: 'Eins' ist kein Mitglied von 'B'.
namespace B {
typedef A::a b;
using A::One;
}
Ich glaube nicht, gibt es eine Möglichkeit, sie alle in ohne gesonderte using
Aussagen zu bringen:
versuchen Sie mit A :: a als b; in Namespace B (oder so ähnlich). (Das ist, warum dies ein Kommentar ist, und keine Antwort.) – jmucchiello
Das ist, weil 'One' ist ** nicht ** ein Mitglied von' B' ... –
Das ist ein wirklich alter Compiler. Müssen Sie diese Version wirklich verwenden? – stefan