将不同的对象添加到std :: list

时间:2010-07-22 08:55:35

标签: c++

可以将不同的类对象添加到同一个列表中吗?

4 个答案:

答案 0 :(得分:6)

参见boost :: any。

您可以使用std :: vector然后使用它来添加异构类型。

示例:

std::vector<boost::any> v;
v.push_back(std::string("hello world"));
v.push_back(42);

答案 1 :(得分:2)

不,如果它们是不相关的对象。如果它们是相关的(即具有公共基类),那么您可以在列表中存储基类指针(使用智能指针而不是原始指针)。

答案 2 :(得分:2)

从技术上讲,您可以将void *指针存储到列表中的对象,但通常不是一个好主意。更好地使用一些“变体”类,例如boost::anyQVariant(如果你使用Qt)将包装你的元素。

答案 3 :(得分:0)

仅当您从同一基类派生对象并声明基类类型列表时。