如何使模板原型继承,以便所有特化继承相同的类/接口?

时间:2012-10-03 15:33:02

标签: c++ templates inheritance

如何创建一个模板原型来声明要从接口继承的类? 我希望该类的所有特化都继承自同一个接口。

类似的东西:

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

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

2 个答案:

答案 0 :(得分:3)

你做不到。模板不是“类”。它们是“类的模板”(这里的模板不是C ++术语,而是英语术语)。它们是构建实际类的骨架。所以当你说:

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

你实际上并没有声明一个类,而是为一些将要构建的类提供规则。此外,当您专门化模板

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

明确地表示你希望它对此专业化的行为有所不同。

答案 1 :(得分:2)

您无法限制显式特化。但它们可能来自BaseInterface:

template <> class A<int>: public BaseInterface {...}