将数据从父类实例复制到子类的有效方法

时间:2016-07-15 07:27:55

标签: c++

我有类场景(来自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;
}

1 个答案:

答案 0 :(得分:1)

我不喜欢场景类,但通常你可以在构造函数中使用initialization list来初始化父类。

在您的示例中,您可以使用:

class Parent
{
    public:
        string name;
};

class Child: public Parent
{
    public:        
        int age;
    Child(Parent& p) : Parent(p) {}
};