2014-04-30 60 views
0

我開始使用模板,我有我想象的是一個簡單的問題,但我無法解決它,也無法找到我可以在網絡上理解的解決方案。模板中的變量分配

我想要一個模板,它將一個變量初始化爲某個標準值,比如說0,(但如果需要它可以是不同的東西)。 到現在爲止我寫了這個簡單的代碼:

template <typename T> 
void InitVar(T& Var){ 

    Var = T(0); 

}; 

此代碼爲簡單的數字小類型的變量,INT,雙,等...但它不工作對不同類型的變量,如字符串。 我知道問題是T(0)命令,但我不知道如何用更一般的東西來替代它。

特別是,我感興趣的是一個工作在標準數值變量和字符串上的代碼。有人能幫我嗎?

+0

可疑的是,您通過值傳遞參數並在函數體內對其進行初始化。 – Constructor

+0

你需要類型特徵 – 101010

+0

「初始化」已存在的東西是什麼意思?似乎這是錯誤的做法。 –

回答

4

首先,這是分配,而不是初始化。

無論如何,您可以使用值初始化:T()
這將零初始化算術類型或調用類類型的默認構造函數。

+0

但是,如果類型缺少默認構造函數,這將不起作用。我認爲他錯過了在傳入方法之前初始化對象的事實。唯一合理的方法是使用構造函數的所有參數的可變參數模板。但是,我沒有看到這樣做的任何理由。 – Ben

+0

@Ben聽起來我認爲DefaultConstructible是OP爲T設定的要求。 – jrok

+0

然後它會自動發生,對吧? – Ben