2012-03-28 11 views
1

にあり、どちらも、クラス内から列挙型へのアクセスクラス内の列挙型は問題ではないだろうが、私はそれをコンパイルしようとすると、私は次のエラーを取得する:は、私は次のセットアップに似た何かを持っている同じ名前空間

'MyEnum::Type1' is not a type 

にはどうすればいいので、私は、同じ名前空間に私の列挙型とクラスを使用することができますこの問題を解決することができますか?あなたの列挙型typedefの

+3

あなたのコンパイラが言っているよう 'MyEnum :: Type1'は、列挙型の値、ないタイプです。 – Mat

答えて

1

MyEnumどのように参照しますか。

namespace MyNamespace 
{ 
    enum MyEnum{ 
     Type1, 
     Type2 
    }; 

    class MyClass 
    { 
     private: 
      void MyFunction(MyEnum); 
    }; 
} 
定義は次のようになります

namespace MyNamespace 
{ 
    void MyClass::MyFunction(MyEnum val) { 
    if (val == Type1) 
     std::cout << "Type1" << std::endl; 
    } 
} 
-1

typedef enum _MyEnum{ Type1, Typ2}MyEnum; 
+0

これはC++ではまったく必要ではなく、* '_MyEnum'は予約された名前です。 –

+0

うん、私は事を完全に混合した。私は、クラスの中でenumを追加することと混同して、 'MyClass :: Type1'のようにクラスにアクセスしました。ごめんなさい – grifos

0

MyEnum::Type1タイプではありません。それは価値です。試してみてください:

void MyFunction(MyEnum); 
関連する問題