繁体   English   中英

将子对象指针转换为基类(来自另一个命名空间)指针

[英]Convert the child object pointer to the base class(from another namespace) pointer

对于我现有的正在运行的代码,它有如下语句:

namespace aa{
    class a{} 
    class b: public a {....}

    class x
    {
       a* function(){ 
         b* object = new b(...);
         ....
         return b;
       }
    }
}

在“函数”调用期间存在从 b* 到 a* 的隐式转换。 它返回一个*。 有用。

现在我已经将类移动到另一个命名空间,如:

namepsace newaa{
  class a{}
}

namespace aa{
    class b: public newaa::a {....}

    class x
    {
       newaa::a* function(){ 
         b* object = new b(...);
         ....
         return b;
       }
    }
}

通过上述更改,我收到错误:无法将 'aa::b*' 转换为 'newaa:a*' 作为回报,为什么?

如果我使用 dynamic_cast return dynamic_cast(b) 它通过编译但我在其他文件中遇到了一些其他错误。

我让你的代码与这些修复程序一起工作; 主要是:从function()返回object ,而不是类型b

namespace newaa{
    class a{};
}
namespace aa{
    class b: public newaa::a {};
    class x
    {
        newaa::a* function(){ 
            b* object = new b();
                return object;
        }
    };
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM