2011-12-30 3 views
2

を解決することはできません。しかし、働いていないことをは、私は、次のような何かを探している入れ子になった列挙型

if(myWhateverInstance.getType() == STATIC_MISC_OBJECT) { 

}else ... 

:だから私はWhateverのインスタンスを持っていると私はmyWhateverInstance上のgetType()を呼び出し、そのように、それが何であるかの種類を判別するための比較を行い、別のクラスの中に言うことができます。基本的に私がそれらを試して解決しても、クラス外の列挙型の値にはアクセスできません。私はここで何をしているのですか? (私が得ている特定のエラーはスコープで宣言されていないか、XXは有効な名前空間やクラスなどではないことに注意してください)。

+0

STATIC_MISC_OBJECT'。修正されました。 enum名の使用は非標準MSエクステンションです。 – lapk

答えて

7

クラスのメンバーである列挙子にアクセスするときは、そのクラスの名前で名前を修飾する必要があります。したがって、列挙子はWhatever::STATIC_MISC_OBJECTなどです。

これは、クラスの外部から列挙子にアクセスする場合にのみ必要です。クラスのスコープ内から、基本名をそのまま使用できます。

+0

ありがとう...おお、知っていたはずです。私が最初にクラス名で修飾してアクセスしようとしたときに、それは私にコンパイルエラーを与えて私を捨てました。ありがとう:) –

3

列挙型は、クラスのメンバーである(コードが同じクラスのメソッドの一部である場合を除く)、あなたはクラス名で修飾する必要があります。

`何であれ::
if(myWhateverInstance.getType() == Whatever::STATIC_MISC_OBJECT) { 
1
class C 
{ 
public: 
    enum E 
    { 
    EA, EB 
    }; 
}; 

C::E en = C::EA; 
関連する問題