如何使用构造函数的参数来调用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){} 
+0

使用构造函数初始化列表:'游戏(INT inWidth,....):gamewindowObj(inWidht,...){}' – user463035818

如果你想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){/ *复杂的东西* /}' –