Я пытаюсь создать объект производного класса и заполнить члены-данные (поступающие из базового класса) существующим объектом базового класса.
В моем жизненном цикле процесса у меня уже был объект базового класса. Для некоторого решения я должен создать новый объект (производный от базового класса). Один из способов сделать это - выставить оценщиков и скопировать данные. Есть ли какое-либо решение, такое как агрегатная инициализация или dynamic_cast, который я мог бы использовать вместо этого?
#include <iostream>
#include <string>
using namespace std;
class Base {
protected:
string name_;
public:
Base() : name_ ("foo")
{
}
void ChangeName()
{
name_ = std::string {"bar"};
}
};
class Child final : Base {
public:
string GetName()
{
return name_;
}
};
int main()
{
Base b;
b.ChangeName();
Child c = {b};
cout<<"Hello World. Here is my name: " << c.GetName() << endl;
return 0;
}
Ожидаемый результат:
Привет, мир. Вот мое имя: бар
Ошибка компиляции
try.cpp:33:17: error: could not convert ‘{b}’ from ‘<brace-enclosed initializer list>’ to ‘Child’
Child c = {b};