多个对象的列表c ++

时间:2015-04-21 13:14:26

标签: c++ list class object

我在使用std::list时遇到了一些问题。我可以很好地使用它的简单"简单"数据类型或一种对象的列表。

我想创建一个包含三种不同类型对象的列表。例如,有三种类型的对象:类p1,类p2,类p3。 我想创建一个包含这三个对象的列表。

class p1 {
...
};

class p2 {
...
};

class p3 {
...
};

int main() {
    std::list<whatshouldiInserthere?> namelist;
}

我已经尝试过模板,但没办法。你能发布一个示例源代码吗?

2 个答案:

答案 0 :(得分:9)

  • 您可以使用void *列表,放弃优雅而现代的解决方案
  • 您可以改为从基类派生所有对象,然后使列表包含指向该基类的指针
  • 您可以使用boost::variantboost::any作为一种安全类型void *。这实际上比它听起来要好得多,因为感谢模板魔术,它没有额外的间接级别,并且仍然不需要相同的基类

答案 1 :(得分:2)

whatshouldiInserthere不存在。您需要存储变体(例如boost::variantboost::any等),它们包含您的类的实例。