クラステンプレートに静的メソッドを定義する方法はありますか?インスタンス化を指定せずに呼び出すことはできますか?インスタンス化を指定せずにクラステンプレートの静的メソッドを呼び出す方法はありますか?
これは、クラスに論理的に属している補助的な静的関数(テンプレートの場合があります)がある場合に便利ですが、テンプレートパラメータには依存しません。
私はどちらか気にしない:
- はすべて インスタンス化のために(アドレスおよびすべてを含む)同じ静的メソッドを持つ、または
- 各インスタンス化のための別々の静的メソッドを持つことが、のことができるように メソッドを呼び出すインスタンス化を指定せずに静的メソッドを呼び出します(デフォルトでは が呼び出されます)。
template<typename T> class C {
public:
static int func() { return 0; }
};
int main()
{
// This works.
return C<int>::func();
// These don't work.
// return C<>::func();
// return C::func();
}
テンプレートのインスタンス化に依存しない場合は、通常の静的な静的(静的でない)関数にしてみましょう。 –
"これは論理的にクラスに属している補助静的関数がある場合に便利だと思います" – Danra
'template'のような不正なデフォルトテンプレートパラメータを追加することがあります。テンプレート引数を指定せずにメソッドを呼び出し可能にします。 'C <> :: func()' –