嗨,我有一个名为MyCode.h和MyCode.cpp的文件

在MyCode.h中,我已经声明

enum MyEnum {Something = 0, SomethingElse = 1};

class MyClass {

MyEnum enumInstance;
void Foo();

};

然后在MyCode.cpp中:
#include "MyCode.h"

void MyClass::Foo() {
    enumInstance = MyEnum::SomethingElse;
}

但是使用g++编译时出现错误'MyEnum'不是类或 namespace ...

(在MS VS2010上工作正常,但在linux g++上工作不正常)

有任何想法吗?
谢谢
汤玛士

最佳答案

语法MyEnum::SomethingElse是Microsoft的扩展名。它碰巧是我喜欢的一个,但它不是Standard C++。 enum值添加到周围的 namespace :

 // header
 enum MyEnum {Something = 0, SomethingElse = 1};

 class MyClass {

 MyEnum enumInstance;
 void Foo();

 }

 // implementation
 #include "MyClass.h"

 void Foo() {
     enumInstance = SomethingElse;
 }

关于c++ - 我的枚举不是类或 namespace ,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/5188554/

10-13 03:00