首先,我应该说代码在 eclipse 之外编译得很好,没有错误。将项目移至 eclipse Juno、CDT 8.1、gcc 4.6.3 版时遇到此问题
//This example code works:
1. class TestThis {
2. public:
3. enum NUMBER { one, two };
4. TestThis();
5. int populate(enum NUMBER n);
6. };
//This generates an error "invalid redefinition of 'NUMBER'" at line 3 before compile:
1. class TestThis {
2. public:
3. enum NUMBER { one, two };
4. TestThis(enum NUMBER n);
5. int populate();
6. };
问题:有没有办法“修复”CDT 以允许将枚举传递给构造函数?或者,如果没有,是否还有其他解决此问题的方法?
最佳答案
就这么说吧
class TestThis
{
enum NUMBER { one, two };
TestThis(NUMBER n);
};
您的代码确实在重新声明另一个 enum NUMBER
。这与 void (struct Foo x);
没有什么不同,后者实际上是 struct Foo
的声明。
更新: 多个声明实际上没问题。再次说 enum
或 struct
是可能的,尽管可能不是很漂亮。
关于c++ - 将成员枚举变量传递给类构造函数时出现无效重定义错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12498072/