【发布时间】:2013-04-19 02:36:54
【问题描述】:
我有一个名为 Cell 的模板类如下:-
template<class T>class Cell
{
string header, T data;
}
现在我想要另一个名为 Row 的类。 Row 将有一个名为 Cells 的向量,这样我就可以将 Cell 和 Cell 类型的元素添加到该向量中。有可能吗?
如果是这样,我该怎么做? 提前致谢。
【问题讨论】:
-
你想在一个向量中保存一行,例如一个 Cell
、一个 Cell 和任何其他单元格类型? -
是的,你是对的。我正是想要那个。
-
这是否意味着您想要多态容器?您只能使用动态多态性(继承)而不能使用静态多态性(模板)。
-
“我有一个名为 Cell 的模板类” 不,你没有。那是一个类模板,也就是说,它不是一个类。
Cell<int>是一个类。Cell<float>也是一个类,Cell<Cell<std::vector<double>>>也是。但它们是三个不同的、独立的类,没有任何共同之处。 -
向量的所有元素必须属于同一类型,因此您不能将
Cell<float>和Cell<int>放在一起。你需要使用指针和继承,而且你必须知道你在做什么。创建一个包含所有子类的无法使用的基类太容易了,然后您就无法访问它。您需要将肉放在基类中。这意味着它必须有一个不依赖于 T 的可用接口。