首先我應該說代碼在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允許傳遞一個枚舉一個構造函數?或者如果沒有,是否還有其他一些解決此問題的方法?
打敗我幾秒鐘。 – Borgleader
其實我的錯誤沒有提到我試過TestThis(NUMBER n); TestThis(TestThis :: NUMBER n); TestThis(enum TestThis :: NUMBER n); TestThis(枚舉NUMBER n);全部導致錯誤。但我可以使用填充(枚舉NUMBER n);或填充(NUMBER n);或填充(TestThis :: NUMBER n);或填充(枚舉TestThis :: NUMBER n); –
,我可以添加更多以「枚舉NUMBER n」作爲成員的函數,但它們不會導致此問題。即test1(枚舉NUMBER n); test2(枚舉NUMBER n);沒有問題 - 它只是構造函數,就像我在eclipse中所說的那樣,「enum」函數參數構造是有效的C++。它的CDT關閉了,我認爲自從我說過,代碼可以很好地從命令行編譯。 –