2014-03-06 62 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(); 
} 
相关问题