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 回答