2016-03-03 102 views
4

我有一類是這樣的:如何爲成員變量調用非默認構造函數?

template<int SIZE> 
class MyClass{ 
public: 
    MyClass(int a, int b){} 
} 

,我想另一個類有MyClass的實例:

class X{ 
    MyClass<10>?? // How do I pass values to constructor args a and b? 
} 

,但我不知道該如何來傳遞參數到將對象聲明爲成員變量時使用兩個參數的構造函數?

+1

哪個版本您使用的C++? C++ 11?最有可能的是,你應該在對象被構建的地方做,而不是它聲明的地方。 –

+1

[C++如何初始化成員對象?]可能的重複(http://stackoverflow.com/questions/28436820/c-how-to-initialize-member-object) – Slava

回答

8

如果您正在使用C++ 11或更高版本,你可以寫

class X{ 
    MyClass<10> mcTen = {1, 5}; 
} 

Demo 1.

此前C++ 11,你需要做的是在構造函數中的初始化列表:

class X{ 
    MyClass<10> mcTen; 
    X() : mcTen(1, 5) { 
    } 
} 

Demo 2.

+0

我記得在某處讀到「正確」的格式是'type name {/ * things * /}','='版本將被棄用或刪除。儘管如此,我還是找不到一個資料來源,所以你可以證實或否認? –