【发布时间】:2019-04-12 00:42:51
【问题描述】:
我正在尝试创建一个派生类对象并使用现有的基类对象填充数据成员(来自基类)。
在我的流程生命周期中,我已经有了一个基类对象。对于某些决定,我必须创建一个新对象(从基类派生)。一种方法是公开评估员并复制数据。有没有我可以使用的解决方案,如聚合初始化或 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};
【问题讨论】:
-
你有什么问题?编译错误?输出不正确? Edit您的问题以添加详细信息。
-
@1201ProgramAlarm 添加编译错误