2012-04-07 4 views
3

필자는 템플릿에 대한 느낌을 얻기 위해 놀았으며 자체 유형별로 클래스 전문화를 원했습니다. 나는 잠시 동안 인터넷을 검색했지만 이것에 대한 언급은 발견되지 않았다.고유 한 유형을 처리하기위한 템플릿 클래스 특수화

예를 들어

나는 class Array있는 경우 :

template<class T> 
class Array{ 
... 
void print(); 
} 

이 방법 print()T=Array<unspecified type> 전문 가능한가요을?

template<class T> 
void Array<Array<T>>::print(){ 
    //do something diffrent for array of array 
    //this code wont work 
} 

이 나는이 기능은 매우 유용한 표시되지 않습니다이

template<> 
void Array<Array<int>>::print(){ 
    //print in matrix format 
    //this code works 
} 

을 관리,하지만 난

답변

2

가 AFAIK 만 전체 클래스에 대한 전문성을 수행 할 수 있습니다 그럼에도 불구하고 궁금 . 일단 내가 그런 것을 필요로하면 (실제로, 나는 두 개의 다른 것이 필요하다.), 그래서 나는 특수화 되어야만하는 멤버들만을 포함하는 보조 클래스를 만들었고, 그 클래스로부터 상속 클래스를 상속 받았다.

2

이와 같은 것을 적용 할 수있는 부분 특수화 기능이 있습니다. 그러나 부분적으로 전체 클래스를 전문화하지 않고도 멤버 함수를 부분적으로 특수화 할 수 있다고는 생각하지 않습니다.

관련 문제