2017-02-01 102 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