ある名前空間のenumの別名を別の名前空間に導入しようとしています。エイリアス化された型の変数を宣言できますが、コンパイラ(gcc 4.1.2)は列挙型の値を認識しません。エラー: 'ワン' が 'B' のメンバーではありませんC++のtypedefと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;
}
コンパイルエラーが
test.cc:12です。
A :: aをbとしてみてください。名前空間Bの内側(またはそのようなもの)。 (これがコメントであり、答えではない理由です) – jmucchiello
これは、 'One'が** Bのメンバーではないからです... –
これは本当に古いコンパイラです。あなたは本当にこのバージョンを使用する必要がありますか? – stefan