2010-05-03 4 views
1

나는클래스 템플릿을 함수 인수로 사용하는 방법은 무엇입니까?

template<int a, int b> 
class C { 
public: 
    array[a][b]; 
} 

의 라인을 따라 선언 된 클래스를 가지고 있고이 같은 함수에 인수로 사용하려는 :

bool DoSomeTests(C &c1, C &c2); 

을하지만 컴파일 할 때, 그것은 '의 사용을 알려줍니다 클래스 템플릿 템플릿 인수 목록이 필요합니다. ' 시도했는데

template<int a, int b> 
bool DoSomeTests(C &c1, C &c2); 

하지만 같은 오류가 발생합니다. 이 문제를 어떻게 해결할 수 있습니까?

template<int a, int b> 
bool DoSomeTests(C<a, b> &c1, C<a, b> &c2); 

클래스 템플릿 C와 함수 템플릿 두 DoSomeTestsint 템플릿 매개 변수를 사용하지만 당신은 매핑 할 사실 :

답변

6

당신은 DoSomeTests의 선언에 클래스 템플릿 C 인수를 제공해야 함수 템플리트에서 C까지는 컴파일러에서 유추 할 수 없습니다.

+0

고마워요, 이제 내가보기에 꽤 분명해 보입니다 ^^. –

+0

그리고 그것이 유추 될 수 없다는 이유는 당신이 잘 의미 할 수 있다는 것입니다 : 'bool DoSomeTests (C & c1, C & c2)'. 그것은 바보 같지만 행렬/벡터 곱셈에 대해 생각할 수도 있습니다.) –

+0

다양한'a'와'b' 사이의 종속성이 사소하지 않으면 컴파일 타임에 유형 확인을 위해'enable_if'를 사용할 수도 있습니다. –

관련 문제