2012-11-24 83 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

相关问题