にあり、どちらも、クラス内から列挙型へのアクセスクラス内の列挙型は問題ではないだろうが、私はそれをコンパイルしようとすると、私は次のエラーを取得する:は、私は次のセットアップに似た何かを持っている同じ名前空間
'MyEnum::Type1' is not a type
にはどうすればいいので、私は、同じ名前空間に私の列挙型とクラスを使用することができますこの問題を解決することができますか?あなたの列挙型typedefの
にあり、どちらも、クラス内から列挙型へのアクセスクラス内の列挙型は問題ではないだろうが、私はそれをコンパイルしようとすると、私は次のエラーを取得する:は、私は次のセットアップに似た何かを持っている同じ名前空間
'MyEnum::Type1' is not a type
にはどうすればいいので、私は、同じ名前空間に私の列挙型とクラスを使用することができますこの問題を解決することができますか?あなたの列挙型typedefの
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;
}
}
typedef enum _MyEnum{ Type1, Typ2}MyEnum;
これはC++ではまったく必要ではなく、* '_MyEnum'は予約された名前です。 –
うん、私は事を完全に混合した。私は、クラスの中でenumを追加することと混同して、 'MyClass :: Type1'のようにクラスにアクセスしました。ごめんなさい – grifos
MyEnum::Type1
はタイプではありません。それは価値です。試してみてください:
void MyFunction(MyEnum);
あなたのコンパイラが言っているよう 'MyEnum :: Type1'は、列挙型の値、ないタイプです。 – Mat