我不明白为什么这种继承不起作用.我有以下设置:
struct Shape{}
struct Stain : Shape {}
Run Code Online (Sandbox Code Playgroud)
现在,为什么我不能做以下事情:
vector<Shape> shapes;
Stain stain();
shapes.push_back(stain);
Run Code Online (Sandbox Code Playgroud)
我希望这可以工作,因为它Stain是一个子类Shape,所以我应该能够Stain进入一个vector<Shape>?或者这在概念上是错误的,我想要做的确实不可能?
Bar*_*icz 10
对于C++中的多态,您需要引用语义.实现这一目标的最简单方法是std::vector<std::unique_ptr<Shape>>.
或者,如果您希望能够复制形状,请查看value_ptr概念.许多实现也允许COW(Copy-on-Write).基本上对于几乎所有目的而言,它就像一个值一样工作,例如它的副本会复制它所持有的值并分配它.
显而易见的变化是您无法再将矢量视为POD内存块.
| 归档时间: |
|
| 查看次数: |
206 次 |
| 最近记录: |