我在使用std::list
时遇到了一些问题。我可以很好地使用它的简单"简单"数据类型或一种对象的列表。
我想创建一个包含三种不同类型对象的列表。例如,有三种类型的对象:类p1,类p2,类p3。 我想创建一个包含这三个对象的列表。
class p1 {
...
};
class p2 {
...
};
class p3 {
...
};
int main() {
std::list<whatshouldiInserthere?> namelist;
}
我已经尝试过模板,但没办法。你能发布一个示例源代码吗?
答案 0 :(得分:9)
void *
列表,放弃优雅而现代的解决方案boost::variant
或boost::any
作为一种安全类型void *
。这实际上比它听起来要好得多,因为感谢模板魔术,它没有额外的间接级别,并且仍然不需要相同的基类答案 1 :(得分:2)
whatshouldiInserthere
不存在。您需要存储变体(例如boost::variant
,boost::any
等),它们包含您的类的实例。