2009-04-12 3 views
1

vector, list 등의 컨테이너 클래스를 사용하는 경우 vector<type>::value_type을 작성하여 요소 유형을 사용할 수 있습니다. 그러나템플릿 인수에 정의 된 유형 사용

,

template<class container> 
void foo(container& c) 
{ 
    typedef container::value_type elementtype; 
    elementtype b; 
}

오류 "expected initializer before ‘elementtype’"실패 다음 코드. 컨테이너 형식이 템플릿 인수로 제공되거나 요소 형식을 추가 템플릿 인수로 제공해야 할 때 요소 형식을 유추 할 수 있습니까?

답변

12

당신은 필요한 유형 이름 키워드를 놓치고 : container이 템플릿에 따라 이름는, 그래서 용기 :: VALUE_TYPE 항상인지 컴파일러가 알 수있는 방법이 없기 때문에

typedef typename container::value_type elementtype; 

입니다 유형에 상관없이 container의 선택에 따라 다를 수 있습니다.

확실히이 질문은 어딘가에 FAQ입니까?

편집 : http://www.parashift.com/c++-faq-lite/templates.html#faq-35.18

관련 문제