2012-11-20 63 views
3

我知道這個問題的常見答案,但出於某種原因,當我在Code :: Blocks上使用正確的語法時出現錯誤,我會發佈一個示例來顯示我不虛張聲勢:額外資格成員GCC

class BulletPlacer : sf::Drawable 
    { 
    public: 
     BulletPlacer(); 
     BulletPlacer(const unsigned Quantity); 

     ~BulletPlacer(); 
    }; 

這是hpp文件的一小部分。

BulletPlacer::BulletPlacer() 
    :Amount(0), Min(0) 
    {} 

    BulletPlacer::BulletPlacer(const unsigned Quantity) 
    :Amount(Quantity), Min(0) 
    { 
     Bullet shot; 
     ShotVec.reserve(Amount); 
     for(unsigned i = 0; i < Amount; ++i) 
     { ShotVec.push_back(shot); } 
    } 

    BulletPlacer::~BulletPlacer() { PolVecV.clear(); ShotVec.clear(); } 

這就是cpp。它編譯得很好,直到我開始重構類,並且我得到了所有方法的錯誤。我也會得到其他沒有任何地位的錯誤,並且我會讓他們擁有課堂上的所有功能。我甚至重新下載了GCC版本才發現它給了我完全相同的結果。

這裏的錯誤日誌的簡化版本:

error: extra qualification 'BulletPlacer::' on member 'BulletPlacer' [-fpermissive]| 
error: 'BulletPlacer::BulletPlacer()' cannot be overloaded| 
error: with 'BulletPlacer::BulletPlacer()'| 

連帶重複這樣的所有功能。這是非常煩人的,因爲我不能僅僅因爲這一點而在我的SFML遊戲中前進,並且僅僅因爲編譯器生我的氣就檢查一個300行文件來查找可能的錯誤是毫無意義的。不,沒有任何被「BulletPlacer」使用的文件得到這個。

error: cannot define member function 'BulletPlacer::Enemy::Enemy' within 'BulletPlacer' 

當類甚至不包括文件...

我使用GCC 4.7:

而且還有更糟糕的,一個完全無關的類獲取類似的還有一些東西。 1

在此先感謝您提供的任何幫助。

+0

缺少大括號和/或分號的頭文件中的類或結構? –

+0

yup,當有很多隨機看錯誤時,通常是它的1個非常瑣碎的標點符號問題。 –

+0

顯示的第一個錯誤是什麼? –

回答

2

這些錯誤意味着編譯器認爲這些定義是在類定義中詞彙上找到的,這意味着缺少};或其他。

這就是我所能提供的信息。

+0

在檢查我的32個文件中的每個文件後,我發現沒有任何類似的內容,這並不奇怪,因爲它在我嘗試重構該特定類之前進行了編譯。鑑於我的項目大小,整個代碼將是瘋狂的,所以我真的不知道我還能提供什麼...... –

+0

@CarlosJimenezBermudez:你不發佈整個項目;您可以在完整的最小測試用例中重現問題。這樣做幾乎肯定會自己發現問題,這就是爲什麼它是互聯網調試前階段的關鍵步驟...... –

+0

我很清楚最小和完整的代碼示例是什麼,但我沒有找到到那時問題的具體部分,以及受影響的兩個文件都是300行,這仍然太多。 –