Предполагая, что у меня есть алмазная иерархия, как показано в приведенном ниже коде.
class A {
public:
A() {}
int a = 3;
virtual void aa() {}
};
class B : public virtual A {
public:
B() : A() {}
int b() { return 4; };
};
class C : public virtual A {
public:
C() : A() {}
};
class D : public B, public C {
protected:
int d = 45;
public:
D() : B(), C() {}
};
У меня есть основная такая:
int main() {
std::unique_ptr<A> a = std::make_unique<D>();
}
Приведенная выше основная приводит к ошибке сегментации. Однако добавление a.release()
к основным обслуживает ошибку сегментации. Почему это так?