2017-12-01 1 views
0

저는 C++ 템플릿 코드에서 매우 새롭습니다. 다음 질문에 대해 제게 교육을 해줄 수 있습니까? 클래스에 대한 멤버 함수를 정의하는 함수 템플릿 (형식이 아닌 매개 변수 만 포함)을 사용하려면 해당 클래스의 템플릿도 정의해야합니다. 즉, C++은 사용자가 템플릿이없는 클래스 내에서 멤버 함수 템플릿 (비 유형 매개 변수 만 포함)을 정의 할 수 있도록합니다. 예 :유형이 아닌 매개 변수가있는 함수 템플리트

class foo{ 

template <int vecsize> 
void bar(std::array<int, vecsize> vec); 
}; 

감사합니다.

+3

비 템플릿 클래스에 템플릿 멤버가있는 것이 문제가 아닙니다. 템플릿 매개 변수의 종류는 중요하지 않습니다. 즉, std :: vector에는 size 매개 변수가 없습니다. –

+0

아마도'std :: array '를 의미 했습니까? – Caleth

+0

답변 해 주신 분께 감사드립니다. 나는 그것을 이해할 수 있도록 내 게시물을 업데이트했습니다. – bin

답변

0

예, 멤버 함수 템플릿에서는 템플릿 구조화를위한 부모 구조가 필요하지 않습니다 (물론 템플릿 일 수 있음).

std::vector 대신 std::array이 필요합니다 (nd는 std :: vector에 대한 크기 매개 변수가 없음).

클래스 정의 끝에 세미콜론이 누락되었습니다.

+0

죄송합니다. 구문이 엉망입니다. 예, 네가 옳다. 나는 사용해야 만한다. & std :: array. – bin

관련 문제