可以将不同的类对象添加到同一个列表中吗?
答案 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::any
或QVariant
(如果你使用Qt)将包装你的元素。
答案 3 :(得分:0)
仅当您从同一基类派生对象并声明基类类型列表时。