如何使用构造函数的参数来调用C++中另一个类的构造函数?
问题描述:
我有问题。我想从类“Game”中调用“gameWindow”的构造函数。问题是,如果我从构造函数调用它作为局部变量初始化(示例A),如果我将它定义为私有成员 - 我不能使用构造函数的参数。我如何使gamewindowObj作为构造函数的成员?如何使用构造函数的参数来调用C++中另一个类的构造函数?
//例如А
class Game{
public:
Game(int inWidth, int inHeight, char const * Intitle);
};
Game::Game(int inWidth, int inHeight, char const * Intitle){
gameWindow gamewindowObj=gameWindow(inWidth, inHeight, Intitle);
}
//例如В
class Game{
public:
Game(int inWidth, int inHeight, char const * Intitle);
private:
gameWindow gamewindowObj=gameWindow(inWidth, inHeight, Intitle);
};
Game::Game(int inWidth, int inHeight, char const * Intitle){}
答
如果你想gamewindowObj
是一个数据成员,并通过构造函数的参数进行初始化,您可以使用member initializer list,例如
class Game{
public:
Game(int inWidth, int inHeight, char const * Intitle);
private:
gameWindow gamewindowObj;
};
Game::Game(int inWidth, int inHeight, char const * Intitle)
: gamewindowObj(inWidth, inHeight, Intitle) {
// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
}
+0
非常感谢,@songyuanyao – petriichuk
+0
此外,在OP。如果它不仅仅是重用参数,有时候值得编写一个可用于初始化'gameWindow'的函数。 'gameWindow && initGameWindow(int arg1,int arg2){/ *复杂的东西* /}' –
使用构造函数初始化列表:'游戏(INT inWidth,....):gamewindowObj(inWidht,...){}' – user463035818