所以我的代码我想创建一个向量,它接受来自派生类“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的建议,但它看起来很复杂......
答案 0 :(得分:-3)
尝试
Vector<Platforms> platforms
我无法理解为什么你在向量中使用指针