2010-11-12 39 views
0

我需要其中缺省值分配給參數的模板函數傳遞如何在模板函數中創建一個類型的實例? (C++)

template <class T> inline T GetDefault() 
{ 
    return ???? # default value 
} 

T CAND是boolintdoublestring

謝謝。

+4

'GetDefault '的所有實例都應該替換爲'T()';這個函數沒有任何用處,只是增加了代碼和混淆。 – GManNickG 2010-11-12 10:18:38

回答

8

默認值(甚至基本類型)應該是默認的「構造「:

template <class T> inline void SetDefault(T& value) 
{ 
    value = T(); 
} 

例如,基於int的類型默認爲0(因爲顯式初始化)。

這顯然不適用於沒有默認值的類型,比如沒有默認構造函數的類的對象。

+1

你爲什麼改變函數聲明? – GManNickG 2010-11-12 10:17:53

+0

@GMan其實是OP做的:) – icecrime 2010-11-12 10:24:24

+0

我複製粘貼......奇怪的是我看不到這個問題已經被編輯了...... – Klaim 2010-11-12 10:25:28

7

您可以使用return T();

注意,這也可以用來給模板的參數類型的默認值:

template<class T> 
void foo(const T &t, const T &tWithDefaultValue = T()) 
{ 
    /* ... */ 
} 
+0

+1速度和briefty。 – Klaim 2010-11-12 09:58:16

+1

@Klaim:你正在尋找的詞是「簡潔」;-) – fredoverflow 2010-11-12 10:41:58

+1

對,不是母語 - 英語,對不起。 ^^;看起來像法文字,但我認爲這是一個「假朋友」。 – Klaim 2010-11-12 10:50:30

5
template <class T> inline T GetDefault() 
{ 
    return T(); 
} 
相關問題