1

インターフェイスから継承するクラスを宣言するテンプレート プロトタイプを作成するにはどうすればよいですか?
そのクラスのすべての特殊化が同じインターフェイスから継承されるようにします。

何かのようなもの:

template <typename T>
class A : public BaseInterface { }

template <>
class A<int> { } //somehow still inherit from the interface "BaseInterface"
4

2 に答える 2

3

できません。テンプレートは「クラス」ではありません。それらは「クラスのテンプレート」です (ここではテンプレートを C++ 用語としてではなく、英語用語として読んでください)。これらは、実際のクラスが構築されるスケルトンです。だからあなたが言うとき:

template <typename T>
class A : public BaseInterface { }

実際にクラスを宣言しているのではなく、構築されるいくつかのクラスにルールを提供しています。また、テンプレートを特化すると

template <>
class A<int> { } //somehow still inherit from the interface "BaseInterface"

この専門化のために異なる動作をさせたいと明示的に言っています。

于 2012-10-03T15:38:07.107 に答える
2

明示的な特殊化を制約することはできません。ただし、BaseInterface から派生する場合があります。

template <> class A<int>: public BaseInterface {...}
于 2012-10-03T15:36:08.410 に答える