我在一个类中声明一个枚举,然后尝试访问另一个类。这对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,但是它讨论了一个全局声明的枚举,而不是在一个类中。
答案 0 :(得分:0)
那编译给我:
class TestMgr
{
public:
typedef enum Mode
{
kError,
kRun,
kFly,
kGDefault = kRun
}Mode;
};
int main()
{
TestMgr::Mode _mode = TestMgr::Mode::kGDefault;
}