从基类向下转换时,是否可以调用派生对象的虚拟方法?

问题描述

| 给定以下类结构:
class Base
{
    virtual void outputMessage() { cout << \"Base message!\"; }
};

class Derived : public Base
{
    virtual void outputMessage() { cout << \"Derived message!\"; }
}
..和此代码段:
Base baseObj;
Derived* convertedObj = (Derived*) &baseObj;
convertedObj->outputMessage();
..输出将是\“ Base message!”。 是否有任何方法可以强制转换或操纵对象,以使派生版本的outputMessage方法被多态调用? 编辑:我将尝试显示为什么我在此之后的原因: 我正在编写挂接到我们主系统的迁移工具。因此,我需要访问受保护的成员方法或自定义现有的虚拟方法。我可以通过定义一个派生类并向其强制转换对象来静态调用方法来实现。我不能做的是更改我不是静态调用的方法(即在代码库其他地方调用的方法)的行为。 我也尝试过直接创建派生类的对象,但是由于对通过构造函数传递的对象的操作,这会导致系统其他部分出现问题。     

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)