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

标签 c++

我有类场景(来自 assimp 库),我用一些功能扩展了它并制作了类 sceneChild。现在我需要将数据从场景实例复制到 sceneChild 实例中。我知道可以手动编写如下内容: sceneChild.a=scene.a , sceneChild.b=scene.b ... 或 this.a=scene.a , this.b=scene.b 在复制构造函数中。然而,有些事情告诉我这可以用几行代码来完成。我对吗?如果是这样,那么如何做到这一点?谢谢!

我问这个问题是因为我不仅需要对场景类执行此复制操作,而且还需要对许多其他充满数据的类执行此复制操作,因此手动执行此操作将花费太长时间。

例子:

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;
}

最佳答案

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

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

class Parent
{
    public:
        string name;
};

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

关于c++ - 将数据从父类实例复制到子类的有效方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38390279/

相关文章:

C++ 生成器 WMI : Invalid Query

c++ - ASM I/O 引脚 HCS12 微 Controller

c++ - Mysql 5.5 LOAD DATA INFILE 权限

c++ - 如何在opencv c++中对图像进行骨架化

c++ - 使用 atof(optarg) 时出现奇怪的输出

c++ - 有没有办法让 Visual Studio 停止缩进命名空间?

c++ - 不能做运算符 << 重载

c++ - 我的 while 循环似乎忽略了我的 getline

c++ - C++中的可变用户定义参数列表?

c++ - 内联命名空间函数时出错