2017-02-01 14 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, чтобы, например, символ (и я знаю, что). Как я должен правильно инициализировать def_value?

+4

* я не могу назначить 0, например, полукокса (и я знаю, что) * Это не так. Вы можете, конечно, инициализировать 'char' с помощью' 0'. –

+0

Да, мой плохой, он скомпилировался, но я получил EXC_BAD_ACCESS (code = 1, address = 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