2012-10-08 82 views
-1

我寫了一個軟件包,在編譯時遇到「沒有命名類型」的問題。C++編譯錯誤「不命名類型」與上面定義的錯誤發生類型?

下面的代碼: skeleton.h

#include "gp.h" 

    ...  

    class Formula : public GP 
    { 
    ... 
    }; 

    ... 

    class FormulaPopulation : public GPPopulation 
    { 
    ... 
    Formula* NthMyGP (int n) { return (Formula*) GPContainer::Nth (n); } 
    ... 
    }; 

當我編譯,編譯器將指示式(在FormulaPopulation)沒有指定類型,但是類公式定義只是上面的類FormulaPopulation,我不知道爲什麼會發生這種錯誤...

如果你想要更多的信息,你可以下載軟件包here。 (下載後,解壓縮該文件並在「printNatural」目錄下進行製作)你可以看到錯誤信息:

任何幫助將不勝感激。

+0

你能粘貼實際的代碼片段嗎?您的帖子在關閉類定義的括號後缺少分號,這可能會輕易混淆編譯器。 – dasblinkenlight

+0

對不起,我犯了這個錯誤......這不是分號問題。 –

+0

你的tarball不會生成,因爲文件丟失,但'extern vector Formula;'可能與你的問題有關。哦,並且*不要*在標頭中寫'使用名字空間標準',永遠不要。 – molbdnilo

回答

1

您的壓縮檔不會因爲建文件丟失,但有一個聲明 extern vector<myFNode> Formula;會導致衝突。

令人非常困惑的是,在無法使用它的情況下定義Formula類而不引起衝突顯然是可能的。

0

如果您複製和粘貼代碼是一樣的是什麼在你的項目,你缺少分號:

#include "gp.h" 
    class Formula : public GP 
    { 
    ... 
    }; // <-- HERE 

    ... 

    class FormulaPopulation : public GPPopulation 
    { 
    ... 
    Formula* NthMyGP (int n) { return (Formula*) GPContainer::Nth (n); } 
    ... 
    }; // <-- HERE 
+0

對不起,犯了這個錯誤......這不是分號的問題。 –