2015-07-02 63 views
0

頭文件在.cpp文件

class Universe 
{ 
    public: 
     Universe(); 
     ~Universe(); 

    private: 
     ChunkManager chunkManager; 
}; 

我想初始化chunkManger不使用默認的構造函數定義的對象。但是,我想使用的構造函數需要一個對象。如何使chunkManager對象在.cpp文件中使用正確的構造函數?所以,我想是這樣的:

Universe::Universe(){ 

    world = new b2World(b2Vec2(0, 0)); 
    world->SetAllowSleeping(false); 

    //I want something like this because the constructor I want takes a World object 
    chunkManager = new ChunkManager(world); 

    player = new Player(world); 
} 
+0

爲什麼這是被壓低投票?我做錯了什麼? – MagnusCaligo

+0

加一個從我身邊。正如你試圖清除你的概念。 – abhi312

+0

世界和球員從哪裏來?他們不在標題中。什麼是oo關係?宇宙是否應該包含一個世界,一個大塊頭管理者和一個球員? –

回答

0

ChunkManager在頭是一個對象不是一個指針,所以chunkManager = new ChunkManager(world);是錯誤的。

你可以把它作爲一個對象並初始化這樣的:

Universe::Universe() : chunkManager(world) 
{ 

但是你沒有world尚未(除非你可以把它作爲一個參數)。最簡單的解決方案是使標頭有一個指針:

private: 
     ChunkManager* chunkManager; 

然後您的.cpp就可以了。

編輯:我假設肯尼奧斯特拉姆在評論中得到的是,因爲你已經動態分配chunkManager你需要確保你在某個時刻(可能是析構函數)delete,以避免內存泄漏。

+0

請在他的破壞程序中編輯。 –

+0

他可以寫宇宙:: Universe():chunkManager(world = new b2World(b2Vec2(0,0))){...} – CoffeeandCode