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

。確かに 'char'を' 0'で初期化することができます。 –

+0

はい、私の悪い、それはコンパイルしましたが、私はEXC_BAD_ACCESS(コード= 1、アドレス= 0x0)を得ました。 – user7337963

+2

これは 'arr'を正しく初期化していない可能性が高いためです。 –

答えて

2

def_valueを正しく初期化する方法を教えてください。

この:

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

またはこの:私は(と私はことを知っている)*それは本当ではない、例えば、に文字を0を割り当てることはできません*

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

ありがとう!私は答えを受け入れますが、私の評判が15未満であるので投票できません。 – user7337963