【发布时间】:2016-06-19 20:31:44
【问题描述】:
我来自这些问题:
- Why can't we declare a std::vector<AbstractClass>?
- abstract classes in std containers
- How to store a vector of objects of an abstract class which are given by std::unique_ptr?
他们都建议我应该使用指针或智能指针。
据我所知,数据是在std::vector 中动态分配的,这意味着std::vector 内部有指针。那么为什么我不能直接使用抽象类呢?为什么我必须对指针(内部)使用指针(我指定的那个)才能使用带有std::vector 的抽象类。我知道像std::vector::resize 这样的一些功能不起作用。不过std::vector::reserve 和std::back_inserter 会解决这个问题。
【问题讨论】:
-
您是否阅读了您链接的第三个问题的答案下的评论 - “原因是您正在调用复制构造函数,因此试图实例化一个抽象类。”
-
不,我错过了......谢谢
标签: c++ c++11 vector polymorphism abstract-class