2014-03-06 102 views
6

我正努力在另一個類中實例化一個類。我主要關心的是......我在哪裏放置構造函數?在頭文件中?在類文件中?還是在兩者?沒有什麼似乎是正確的。我會盡可能簡化這一點。讓我知道,如果它過於簡單;) 這是我怎麼會覺得它應該是:C++在類中實例化一個類。正確的方法?

GameWorld.h:

#include "GameObject.h" 

class GameWorld 
{ 
protected: 
    GameObject gameobject; 
} 

GameWorld.cpp:

#include "GameWorld.h" 

void GameWorld::GameWorld() 
{ 
    GameObject gameObject(constrctor parameters); 
} 

//When I compile the program, the values in the gameObject, are not set to anything. 

所以這是一個我嘗試過的東西。將構造函數放入標題中也不起作用,原因很明顯;我無法從GameWorld中提供任何參數。

這樣做的正確方法是什麼?

編輯:糟糕。刪除了一些無用的東西。

+0

您在標題中聲明該類。在那裏,你聲明瞭構造函數,析構函數等。然後在cpp文件中定義構造函數。在這裏你可以創建一個初始化列表來初始化類中的所有成員變量。您還可以在顯式構造函數中使用參數列表,並將這些輸入設置爲任何您想要的。 – CoryKramer

回答

10

您需要初始化包含類初始化程序列表中的GameObject成員。

// In the GameWorld.h header.. 
class GameWorld 
{ 
public: 
    GameWorld(); // Declare your default constructor. 

protected: 
    GameObject gameobject; // No() here. 
} 

// In the GameWorld.cpp implementation file. 
GameWorld::GameWorld() // No 'void' return type here. 
    : gameObject(ctorParams) // Initializer list. Constructing gameObject with args 
{ 
} 
+0

但構造函數已經在cpp文件中?不能有兩個構造函數:/所以我把它添加到cpp文件中的控制器呢? 編輯:啊,是的,這個工程!但是,這將如何在飛行中創建新對象?當我真的需要弄清楚如何使我的矢量工作。我想這應該是另一個問題? :P – Frederik

+1

構造函數需要在類聲明中聲明_declared_。然後它需要一個_definition_來說明它實際做了什麼。 – Aesthete

+1

這就是_dynamic allocation_的用途。查看指針,新的和STL結構,如向量和地圖。如果您對此有疑問,您應該發佈一個新問題。 – Aesthete

0

我相信你會想在遊戲世界頭內聲明的遊戲對象,然後創建在遊戲世界構造的遊戲對象的對象。

//GameWorld.h 
#include GameObject.h 

class GameWorld 
{ 
private: 
    GameObject object; 

}; 

//GameWorld.cpp 
#include GameWorld.h 

GameWorld::GameWorld() 
{ 
    object(); 
} 
相關問題