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