2013-04-23 2 views
2

T 타입의 요소를 만들고 구성한 다음 배열에 추가해야하는 곳에 템플릿 문제가 발생했습니다.C++ 템플릿에서는 알 수없는 유형 (T)의 요소를 어떻게 구성합니까?

구성 부분을 수행하는 방법을 잘 모르겠습니다.

은 우리가

T element; 

또는

제공
T element = T(); 
+0

그들은 다른 일을 할 수 있습니다. 'T'가'int' 인 경우,'int element;'또는'int element = int();'를 원합니까? –

답변

2

을 수행하여 T 클래스 유형이 될하기위한 것입니다,이 버전 말할 것이다 :

T element; 

바람직하다 요소가 디폴트로 구성 가능하다면 (그리고 그렇지 않다면 위의 접근법 중 어느 것도 작동하지 않는다). 두 번째 버전을 사용 :

T element = T(); 

가 의미하는 것은 element 복사 - 건설 또는 이동 - 건설 얻을 수있는 유형 T의 임시 객체를 생성 할 수 있습니다. 또한 유형을 옮길 수없는 경우 컴파일되지 않습니다.

요소가 기본 유형 인 경우 T element = T()은 값 초기화를 제공합니다. 예를 들어, T = int 일 때, element은 0으로 초기화되고, 첫 번째 경우에는 초기화되지 않습니다. C++ 11, 가장 좋은 방법 (코멘트에 mfontanini 의해 제안)에서는

균일 초기화 구문 직접 초기화를 사용하는 것이다 (따라서 함수 선언으로 파싱 컴파일러 방지)

T element{}; 

이렇게하면 클래스 유형의 기본 구성과 기본 유형의 값 초기화가 제공됩니다.

+0

'T 요소 {};'값이 초기화됩니다. 그렇습니까? – mfontanini

+0

@mfontanini : 당연히이 C++ 11 대안을 잊어 버렸습니다. 그것을 언급하겠습니다. 고마워요. –