C ++中有什么方法可以将Parent类强制转换/复制为Child类?

时间:2020-03-31 16:59:41

标签: c++ inheritance

我从无法真正改变的框架中收到了一个复杂的对象:

Parent parent = framework.get();

我想为此父级添加一些属性和方法:

class Child : public Parent {
    public:
        inline Child() {}
        int extraVariable = 999;
        int extraMethod() { return 666; }
    };

除了手动复制所有属性外,是否有任何方法可以“投射”或将实例化的Parent复制到Child类中?

相当于python的

class Child(Parent):
    def extraMethod(self):
        return 666

parent = framework.get()
parent.__class__ = Child

我意识到C ++不是python,但我愿意将其一起破解(这是个人代码,也可以是ugly)。

1 个答案:

答案 0 :(得分:3)

您可以在Child中添加一个或两个转换构造函数。

示例:

class Child : public Parent {
public:
    // converting constructors
    Child(const Parent& p) : Parent(p) {}        // copy
    Child(Parent&& p) : Parent(std::move(p)) {}  // move

    //...
}

Demo