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は、クラス全体に対してのみスペシャライゼーションを実行できます。そのようなものが必要になったとき(実際には、2つだけtypedef異なる必要がありました)、特殊化する必要のあるメンバーのみを含む補助クラスを作成し、それからプリンシパルクラスを継承しました。

于 2012-04-07T13:15:42.333 に答える
2

このようなものを適用できる部分的な特殊化と呼ばれる機能があります。ただし、クラス全体を部分的に特殊化せずにメンバー関数を部分的に特殊化できるとは思いません。

于 2012-04-07T13:59:33.480 に答える