我需要其中缺省值分配給參數的模板函數傳遞如何在模板函數中創建一個類型的實例? (C++)
template <class T> inline T GetDefault()
{
return ???? # default value
}
T
CAND是bool
,int
,double
和string
。
謝謝。
我需要其中缺省值分配給參數的模板函數傳遞如何在模板函數中創建一個類型的實例? (C++)
template <class T> inline T GetDefault()
{
return ???? # default value
}
T
CAND是bool
,int
,double
和string
。
謝謝。
默認值(甚至基本類型)應該是默認的「構造「:
template <class T> inline void SetDefault(T& value)
{
value = T();
}
例如,基於int的類型默認爲0(因爲顯式初始化)。
這顯然不適用於沒有默認值的類型,比如沒有默認構造函數的類的對象。
您可以使用return T();
注意,這也可以用來給模板的參數類型的默認值:
template<class T>
void foo(const T &t, const T &tWithDefaultValue = T())
{
/* ... */
}
+1速度和briefty。 – Klaim 2010-11-12 09:58:16
@Klaim:你正在尋找的詞是「簡潔」;-) – fredoverflow 2010-11-12 10:41:58
對,不是母語 - 英語,對不起。 ^^;看起來像法文字,但我認爲這是一個「假朋友」。 – Klaim 2010-11-12 10:50:30
template <class T> inline T GetDefault()
{
return T();
}
'GetDefault'的所有實例都應該替換爲'T()';這個函數沒有任何用處,只是增加了代碼和混淆。 –
GManNickG
2010-11-12 10:18:38