【发布时间】:2016-08-23 15:47:37
【问题描述】:
我想将派生自类模板MyClassTemplate 的类存储在向量中。
不幸的是,在 C++ 中,如果不指定其参数(类似于 std::vector<MyClassTemplate<?,?>> myVector;),就无法定义 MyClassTemplate 的向量。
但是有一种可能的解决方案是将非模板化接口(仅具有纯虚函数的类)定义为向量中项目的类型。 该接口由类模板继承。在我的例子中,类模板只有使用模板参数的成员,所以看起来只有一个空接口才是适合我的 Vector 的项目类型。
这个问题还有其他(更好的)解决方案吗?
【问题讨论】:
-
std::vector<MyClassTemplate<?,?>> myVector;不可能是什么意思?请举个小例子 -
@VittorioRomeo 我确定
MyClassTemplate<A,B>和MyClassTemplate<C,D>在一个向量中。 -
为什么要将不相关类型的元素存储在容器中?如果您不知道它们的类型,您将如何对它们进行任何操作?
标签: c++ templates inheritance vector interface