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
}

我不认为这个功能非常有用,但我还是很好奇

4

2 回答 2

2

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

于 2012-04-07T13:15:42.333 回答
2

有一个称为部分专业化的功能,您可以在其中应用类似的东西。但是,我不相信您可以部分专门化成员函数而不部分专门化整个类。

于 2012-04-07T13:59:33.480 回答