从类中访问枚举,两者都在同一名称空间中

时间:2012-03-28 14:55:41

标签: c++ namespaces scope

我有类似以下设置的内容:

namespace MyNamespace
{
    enum MyEnum{
        Type1,
        Type2
    };

    class MyClass
    {
        private:
            void MyFunction( MyEnum::Type1 );
    };
}

我会假设因为MyEnumMyClass都在MyNAmespace内,所以使用类中的枚举类型不会有问题,但是当我尝试编译它时我收到以下错误:

'MyEnum::Type1' is not a type

如何解决此问题,以便在同一命名空间中使用我的枚举和类?

3 个答案:

答案 0 :(得分: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 :(得分:0)

MyEnum::Type1 不是类型。这是一个价值。试试这个:

void MyFunction( MyEnum );

答案 2 :(得分:-1)

键入你的枚举

typedef enum _MyEnum{ Type1, Typ2}MyEnum;