我从无法真正改变的框架中收到了一个复杂的对象:
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)。
答案 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
//...
}