如何在向量中存储多个类的不同对象?

时间:2017-05-29 21:13:19

标签: c++ inheritance vector

所以我的代码我想创建一个向量,它接受来自派生类“PLATFORM”的任何对象。 所以平台是我的基础,我有书籍,游戏,电视节目和其他东西。我想把所有这些都放在一个矢量中。它需要以这种方式完成,因此没有其他方法可以解决它。

所以我想要一个矢量来包含......来自书籍的对象,来自游戏的对象等...... 我一直在论坛上阅读,我一直看到人们建议使用boost :: any或boost :: variant。我正试图避免在目前使用提升。

我见过多个建议,比如...... 做像

这样的事情
Book tmpBook;
tmpBook.setName("ERAGON");
//I do the above just to get a object to use


vector<Platforms*> platforms
platforms.push_back(tmpBook)
cout << platforms.at(0).getName() << endl;

我希望看到它打印掉ERAGON,但是我收到了一个错误... 错误:请求'platforms.std :: vector&lt; _Tp,_Alloc&gt; :: at&gt;(0u)'中的成员'getName',这是指针类型......它从这里开始。

我觉得我在这里缺少一些非常关键的东西,所以请帮忙!

我的类只使用基类“Platform”设置,其中包含getName()和setName()虚方法以及受保护的字符串名称变量。

派生类基本上只有它们的类的setName()和getName()版本。

稍后,我计划添加更多细节,进一步定义每个类,并为其各自的对象提供更多定义功能。就像一本有页码等的书......

我也看到了使用sharedptr的建议,但它看起来很复杂......

1 个答案:

答案 0 :(得分:-3)

尝试

Vector<Platforms> platforms

我无法理解为什么你在向量中使用指针