首页| 论坛| 消息

标题:qobject_cast转换为基类类型闹鬼事件,为什么会返回Null呢?
作者:shixingya
日期:2020-01-09 18:32
内容:

下面的问题原因Get了 如果既是QObject派生类,又用Q_DECLARE_INTERFACE声明为接口,用qobject_cast是会有问题的 ,用dynamic_cast 就不会有问题,如果非要用qobject_cast,则参考代码
#undef Q_DECLARE_INTERFACE
#define Q_DECLARE_INTERFACE(IFace, IId) \
template inline IFace *qobject_cast(QObject *object) \
{IFace * face = reinterpret_cast((object ? object->qt_metacast(IId) : 0)); \
return face ? face : static_cast(reinterpret_cast(object)->staticMetaObject.cast(object));}
参考自 https://www.it610.com/article/4104865.htm


图中DrawToolInterface是基类,而且声明了接口类型,所以会有以上问题。


#1 [shixingya 01-09 19:06]
https://blog.csdn.net/iteye_6429/article/details/82103431

回复 发表
主题 版块