如何创建一个模板原型来声明要从接口继承的类? 我希望该类的所有特化都继承自同一个接口。
类似的东西:
template <typename T>
class A : public BaseInterface { }
template <>
class A<int> { } //somehow still inherit from the interface "BaseInterface"
答案 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 {...}