c++ - 将成员枚举变量传递给类构造函数时出现无效重定义错误

标签 c++ eclipse constructor enums arguments

首先,我应该说代码在 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声明

更新: 多个声明实际上没问题。再次说 enumstruct 是可能的,尽管可能不是很漂亮。

关于c++ - 将成员枚举变量传递给类构造函数时出现无效重定义错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12498072/

相关文章:

eclipse - 使用 Swing 截断图像

xml - Eclipse XML 格式化程序插入不需要的换行符

c++ - 如何在另一个类的 vector 中调用派生类的析构函数

c++ - 错误 : iostream. h 由于包含 cplex

c++ - Visual Studio 代码 "undefined reference to ` WinMain@1 6'"

java - 如何将开源库安装到Eclipse?

c++ - 在类中声明一个数组,并使用构造函数设置其大小

c++ - 转换函数/运算符,静态解析函数还是转换构造函数?

c++ - 构造函数基于最后一个参数的值?

c++ - QSignalMapper 是如何工作的?