【问题标题】:accessing an enum declared in a C++ class [duplicate]访问在 C++ 类中声明的枚举 [重复]
【发布时间】:2018-03-23 10:43:37
【问题描述】:

我在一个类中声明了一个枚举,然后尝试在不同的类中访问它。这在 vs2010 上工作得很好,但在 g++ 上失败了,错误“不是类或命名空间名称”

//Manager.h
class TestMgr
{
public:
        typedef enum
       {
                kError,
                kRun,
                kFly,
                kDefault = kRun
        }Mode;

};

主要功能

//main.cpp
#include"Manager.h"    
int main()
{

   TestMgr::Mode _mode = TestMgr::Mode::kDefault;

}

这给了我一个编译错误:“TestMgr::Mode”不是类或命名空间

请指导。

编辑:我看到有一个类似的问题here,但它谈论的是全局声明的枚举,而不是在一个类中。

【问题讨论】:

  • 你为什么在这里使用typedef?还有一个错字:kGDefault !=kDefault
  • 你没有在这里显示任何包含,你是忘记了还是没有?
  • 在这里保持代码简约。我在尝试编译时添加了标题。
  • 好的,所以想通了语法TestMgr::Mode::kDefault;不适用于 GCC。您应该将其用作 TestMgr::kDefault;而是

标签: c++ g++


【解决方案1】:

这对我来说是:

class TestMgr
{
public:
        typedef enum Mode
       {
                kError,
                kRun,
                kFly,
                kGDefault = kRun
        }Mode;
};

int main()
{
   TestMgr::Mode _mode = TestMgr::Mode::kGDefault;
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-04-26
    • 1970-01-01
    • 2013-02-14
    • 2020-07-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多