2012-09-18 263 views
1

可能重複:
c++ call constructor from constructor將參數從不同的構造函數傳遞給類構造函數?

我有兩個構造爲同一類,我想一個構造函數將數據發送到第二構造。

我知道如何做到這一點在C#中,但我是新的C++,我不知道這是可能的,像這樣:

class a 
{ 

public: 
a (int x); 
a (int x, int b, char g); 

}; 

a :: a(int x) : this(x, 6, 'h') 
{ 

} 
+0

您的編譯器是否支持C++ 11功能? – hmjd

+0

只看該問題的第二個答案我掛,如果你對C++ 11 –

回答

3

新的C++標準11支持此功能(稱爲委託構造函數)。語法是這樣的:

a::a(int x) : a(x, 6, 'h') {} 

如果你的編譯器不支持新的標準,你將需要提取共同行爲到另一個初始化方法並調用構造函數體的方法。

+0

THX,因爲我目前沒有使用C++ 11我一定不這樣做的方式? –

+0

我編輯了答案:不幸的不是。 –

+0

@DavidLimkys什麼阻止你使用C++ 11功能?是否因爲你的編譯器不支持它? –

0

有可能在C++11,但不是在早期版本。

一般情況下,你可以試試把普通的東西變成一個(非虛)成員函數,並調用從你的構造。雖然這不會允許你初始化所有的東西(只是你在構造函數體中做的事情,而不是在前導中初始化的東西),但它可能仍然是「比沒有好」。