我有类场景(来自assimp库),我用一些函数扩展它并创建了类sceneChild。现在我需要将场景实例中的数据复制到sceneChild实例中。我知道有可能手动写这样的东西:sceneChild.a = scene.a,sceneChild.b = scene.b ...或this.a = scene.a,this.b = scene.b in copy constructor。但有些事情告诉我,这可以用几行代码完成。我对吗?如果是这样,那么如何做到这一点?谢谢!
我问它是因为我需要不仅对场景类执行此复制操作,而且还需要使用许多其他充满数据的类来执行此复制操作,因此手动操作需要很长时间。
示例:
class Parent
{
public:
string name;
};
class Child: Parent
{
public:
int age;
};
int main()
{
Parent p;
p.name = "some name";
Child c(p); // some magic here so that data (in this case string "name")
//is copied from p to c so that c.name=="some name"
return 0;
}
答案 0 :(得分:1)
我不喜欢场景类,但通常你可以在构造函数中使用initialization list来初始化父类。
在您的示例中,您可以使用:
class Parent
{
public:
string name;
};
class Child: public Parent
{
public:
int age;
Child(Parent& p) : Parent(p) {}
};