收集一个抽象类类型,shared_ptr的抽象类向量

时间:2019-04-15 22:33:53

标签: c++ vector abstract-class unique-ptr

错误

  

e / c ++ / v1 /算法:642:   /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include/c++/v1/utility:321:9:错误:

     

字段类型'Space'是一个抽象类       _T2秒;           ^

     

/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include/c ++ / v1 / map:624:16:注意:

问题

如何定义类型为std::vector的{​​{1}},这是一个抽象类,然后用派生类SpaceEmpty,{{ 1}}。

上下文

我知道C ++中的抽象类无法实例化。相反,我在该站点和其他站点上已经读过几篇文章,如果该类型定义为星型Snake指针或任何Ladder托管指针数据,则可以创建一个抽象类型的集合*之类的类型。我尝试使用<memory>,但仍然无法正确定义集合。我使用std::unqiue_ptr<T>编译了代码。

代码

shared_ptr<Space>

1 个答案:

答案 0 :(得分:1)

您似乎已经删除了很多代码,以在此处了解详细信息。 有一个Space指针(智能或原始)。实例化所需的特定空间,并使用类型Space的指针指向该空间。示例std::shared_ptr<Space> pointerToSpace = std::make_shared<Snake> ("I'm a snake");现在,在不失一般性的情况下,您可以仅使用指向空格pointerToSpace->class_type()的指针来打印内容(具体类型)。是的,您可以在一个容器中收集shared_ptr的集合。