对于我现有的工作代码,它有如下声明:
namespace aa{
class a{}
class b: public a {....}
class x
{
a* function(){
b* object = new b(...);
....
return b;
}
}
}
在“函数”调用期间,存在从b *到* *的隐式转换。它返回*。它有效。
现在我将类移动到另一个名称空间,如:
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) 它通过编译,但我在其他文件中得到了一些其他错误。
答案 0 :(得分:2)
我让你的代码使用这些修复程序;主要:从object
返回function()
,而不是b
:
namespace newaa{
class a{};
}
namespace aa{
class b: public newaa::a {};
class x
{
newaa::a* function(){
b* object = new b();
return object;
}
};
}