2013-03-01 2 views
1

난 그냥 다음 코드C++ 다른 템플릿 함수에서 템플릿 함수를 호출은

class MailBox{ 
}; 

template<typename T> 
    void foo(T){ 
    cout << "In foo" << endl; 
} 

template<typename T> 
void foo1(T){ 
    foo(T); 
} 

main() 
{ 
     MailBox m; 
     std::vector<MailBox> m1; 

     foo1(m1); 
} 

컴파일

test1.cpp: In function âvoid foo1(T)â: 
test1.cpp:15: error: expected primary-expression before â)â token 

어떤 생각이 어떻게이 문제를 해결하는 동안 우리는 오류 아래 점점 시도?

답변

7

당신이 놓치고있는 형식 매개 변수 :

template<typename T> 
    void foo(T t) { 
     cout << "In foo" << endl; 
} 

template<typename T> 
    void foo1(T t) { 
     foo(t); 
} 
+0

고맙습니다 ...이 작품은 ... :) :) – user2122648

+0

@ user2122648 당신은 받아 들여야합니다. –

+1

정확하게 말하면, 형식 매개 변수는'foo1'에서만 필요합니다. 'foo'에서 인자를 제공하면 "unused parameter"경고를받을 수도 있습니다. –

1

당신은 매개 변수의 이름을 잊고있어! 예를 들어

, foo1()은 다음과 같아야합니다

template <typename T> 
    foo1 (T myT) { 
    foo(myT); 
    } 

는 template'd 유형은 여전히 ​​유형, 그리고 당신이 그 유형 (변수와 같은) 것을 선언하는 데 사용할 필요가 기억하십시오.

관련 문제