Pro*_*rof 59 c++ enums g++ c++11
嗨,我有名为MyCode.h和MyCode.cpp的文件
在我已经声明的MyCode.h中
enum MyEnum {Something = 0, SomethingElse = 1};
class MyClass {
MyEnum enumInstance;
void Foo();
};
Run Code Online (Sandbox Code Playgroud)
然后在MyCode.cpp中:
#include "MyCode.h"
void MyClass::Foo() {
enumInstance = MyEnum::SomethingElse;
}
Run Code Online (Sandbox Code Playgroud)
但是当用g ++编译时,我得到错误'MyEnum'不是类或命名空间......
(在MS VS2010中工作正常,但不是linux g ++)
有任何想法吗?谢谢托马斯
Max*_*ert 63
语法MyEnum::SomethingElse是Microsoft扩展.它碰巧是我喜欢的,但它不是标准C++. enum值被添加到周围的命名空间:
// header
enum MyEnum {Something = 0, SomethingElse = 1};
class MyClass {
MyEnum enumInstance;
void Foo();
}
// implementation
#include "MyClass.h"
void Foo() {
enumInstance = SomethingElse;
}
Run Code Online (Sandbox Code Playgroud)
ild*_*arn 51
在C++ 0x之前,Scoped枚举将不存在.目前,您的代码应该是
enumInstance = SomethingElse;
Run Code Online (Sandbox Code Playgroud)
您可以通过将枚举的定义放在其自己的命名空间或结构中来创建人工范围的枚举.