2012-10-12 25 views
0

我有一個名爲Entity的類的子類,我不希望該子類重寫Entity的構造函數,但也調用Entity的構造函數。所以我聲明構造是這樣的:如何用參數重寫構造函數並在單獨的文件中實現它

EntitySphere(GLuint shader):Entity(shader){ 
    //Code 
} 

但如果我實現的功能有,這種方法只適用於類定義(或者我得到了很多的錯誤)。我該如何實現相同的功能,但是能夠在.cpp文件中實現構造函數?

+2

您可以在.cpp文件中實現構造函數(但將類名稱放在構造函數名稱:'EntitySphere :: EntitySphere'),同時在頭文件中聲明它:'EntitySphere(GLuint sphere);' – leemes

+1

我希望在'EntitySphere'的頭文件中添加那個,你不需要包含'實體'標題。只需將其聲明爲「實體:實體(GLuint着色器)」。如果'Entity'頭部發生變化,將會節省大量時間,但這些變化不會影響'EntitySphere'。 –

回答

3

要實現的類定義外部構造函數(或任何方法,爲此事),你需要的方法名稱前指定類的名稱:

EntitySphere::EntitySphere(GLuint shader): Entity(shader) { 
    // ... 
} 

注意休息前EntitySphere::部分的方法。

否則,編譯器不知道您提供定義的方法。 (也許它可以被猜到,但是如果它猜到錯誤並且在你的程序中將其與某些其他函數關聯起來怎麼辦?)

+0

謝謝!問題是,這樣做我得到了很多錯誤。但是從聲明中刪除:實體(着色器)修復了它,現在它工作。 – XaitormanX

相關問題