【发布时间】:2015-03-26 14:13:45
【问题描述】:
所以我试图在 C++ 中创建一个“表”类,其结构如下:
表格.h
class Table
{
private:
class TableImpl;
TableImpl* impl;
};
表格.cpp
class Table::TableImpl
{
private:
class Row
{
private:
template <typename T>
class RowDataCell
{
T data;
}
std::vector<RowDataCell*> data;
};
std::vector<Row*> rows;
};
TableImpl 由 std::vector 和 Row 对象组成,每个 Row 对象由 std::vector 和通用 RowDataCell 对象组成。唯一的问题是,我无法创建std::vector,因为我需要为RowDataCell* 提供一个模板参数,这将阻碍我拥有一个包含杂项对象的容器的目标。
有没有一种方法可以使用标准 C++ 来实现这个目标。
【问题讨论】:
-
看看 boost::any (并在此处放置模板 - 尽管 - boost::variant 也可能是一个选项)
-
您永远不需要通用对象的容器。你可以做一个,但它会很难使用。更好的是每种类型的单独容器,或者
boost::variant的容器。
标签: c++ templates c++11 generics containers