模板类专门化来处理自己的类型

时间:2012-04-07 12:19:27

标签: c++ template-specialization

我一直在玩模板来感受他们,我想在自己的类型上做类专业化。我在互联网上搜索了一段时间,但我没有发现这一点。

例如,如果我有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 个答案:

答案 0 :(得分:2)

AFAIK您只能为全班进行专业化。一旦我需要这样的东西(实际上,我只需要两个typedef不同),所以我创建了一个辅助类,它只包含必须专门化的成员,并使主要类继承它。

答案 1 :(得分:2)

有一个名为部分特化的功能,你可以应用这样的东西。但是,我不相信你可以部分地专门化成员函数而不会对整个班级进行部分专业化。