2017-07-25 211 views
1

我有問題。我想從類「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

回答

7

如果你想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){/ *複雜的東西* /}' –

相關問題