Строка
*this = getParentObject();
возможна, только если для определения класса возможно присвоение Parent
для Child
. Вы должны определить operator=
или конструктор копирования, если вы go с static_cast
.
Но определение Child()
неверно, потому что у Parent нет ctor по умолчанию.
Child() // <-- no initialization list, all sub-object are default-initialized
{
*this = getParentObject();
}
Все подобъекты инициализируются по умолчанию, а базовый класс всегда является подобъектом производного класса , Определенные компилятором конструкторы в Parent
удалены, потому что пользователь определил пользовательский конструктор.
Весь набор требований выше может быть опущен с помощью
Child() : Parent(123) {}
или определите конструктор копирования \ перемещения для Parent
и используйте
Child() : Parent(getParentObject())
, если вам нужно.