我一直在玩模板来感受他们,我想在自己的类型上做类专业化。我在互联网上搜索了一段时间,但我没有发现这一点。
例如,如果我有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
}
我没有看到这个功能非常有用,但我仍然很好奇
答案 0 :(得分:2)
AFAIK您只能为全班进行专业化。一旦我需要这样的东西(实际上,我只需要两个typedef
不同),所以我创建了一个辅助类,它只包含必须专门化的成员,并使主要类继承它。
答案 1 :(得分:2)
有一个名为部分特化的功能,你可以应用这样的东西。但是,我不相信你可以部分地专门化成员函数而不会对整个班级进行部分专业化。