2017-02-01 149 views
1

我試圖在網站上尋找這個,但我找不到我需要的。
基本上我需要知道什麼是在默認構造函數中初始化模板變量的正確方法。
例如:初始化列表模板變量

template<typename T> 
class myClass{ 
    T *arr;  // no problem with this. 
    int size; 
    int capacity; 
    T def_value; // how do I initialize this template variable in the constructor? 

我想是這樣的:

myClass(): arr(0), size(0), capacity(0), def_value(0){}; 

不過,這並不編譯,因爲我不能分配0,例如,一個char(我知道, )。 我該如何正確初始化def_value

+4

*我不能分配0到,例如,一個char(我知道)*這是不正確的。你當然可以用'0'初始化一個'char'。 –

+0

是的,我的壞,它編譯,但我得到了EXC_BAD_ACCESS(代碼= 1,地址= 0x0)。 – user7337963

+2

這很可能是因爲你沒有正確初始化'arr'。 –

回答

2

我該如何正確初始化def_value

就像例如這樣的:

myClass(): arr(nullptr), size(0), capacity(0), def_value() {}; 
              // ^^^^^^^^^^^ 

或本:

myClass(): arr(nullptr), size(0), capacity(0), def_value{} {}; 
              // ^^^^^^^^^^^ 
+0

謝謝!我會接受答案,但我不能投票,因爲我的聲望不到15。 – user7337963