分配子对象的正确方法是什么?例如:
B
这可行(或恰好工作?),但很尴尬,并依赖于knn
布局的假设。那么,正确的方法是什么?
答案 0 :(得分:3)
通常,您不分配子对象。它在概念上是错误的,并且违反了继承应该如何工作。如果你需要这个,也许你有错误的抽象,真的想要组合:
struct B {
A a;
};
std::unique_ptr<B> bp{new B{}};
A a{12, 13};
bp->a = a;
答案 1 :(得分:3)
这可能稍微更惯用:
bp->A::operator=(a);
这种事情很少见,所以很难说。一般来说,你可以越多地避免演员表现越好,但是在这种情况下进行明确的演员表可能很有用,可以清楚地表明你正在做一些与众不同的事情。