2012-11-24 81 views
1

我一整天都在抨擊這個問題,因爲很多次都是谷歌旅行。 我有一個主對象,需要在其構造函數中創建其他幾個對象,主對象在其構造函數中獲取傳遞給它創建的對象的變量。通過構造函數在對象中傳遞變量創建對象

class WorldManager{ 
    public: 
    WorldManager(int x, int y, int z){ 
    //do stuff 
    } 
} 

class GameManager{ 
    public: 
    WorldManager world; 
    GameManager(int x, int y, int z){ 
    world(x,y,z); 
    } 
} 

我得到錯誤

error: no matching function for call to `GAMEMANAGER::GraphicsManager(HWND__*&, int&, int&)' 

它的工作,直到我要求在世界級的構造ARGS

+0

LOL,有這麼沮喪,我忘了補充錯誤。 – FreakinaBox

+4

小心,您的錯誤消息和您的代碼似乎無關。代碼中沒有'GraphicsManager'函數或類。 –

+0

根據「經理人」對象以及一般來說,代碼各部分之間的優勢關係來思考,可能會導致比這種小技術性更令人頭疼的問題。 –

回答

3

我想你想:

class GameManager{ 
public: 
    WorldManager world; 
    GameManager(int x, int y, int z) : world(x, y, z) { } 
}; 

怪異冒號事物被稱爲初始化列表,它構造了成員對象,父類和一堆o其他的東西。


如果你要建立一個以上的對象,將它們添加到列表中:

class GameManager{ 
public: 
    WorldManager world1, world2; 
    GameManager(int x, int y, int z) : world1(x, y, z), world2(x, y, z) { } 
}; 
+0

@billz,我看不出爲什麼不,你能詳細說明一下嗎? –

+0

我有3個班,我正在創建 – FreakinaBox

+0

@billz我很確定這是他們正在尋找。 – Xymostech

相關問題