问题描述
Qt for Android
环境下发现 dynamic_cast
转换失败,最终确认是因为跨模块的原因。即 communicate
模块中的指针在 machine
模块中进行转换时会失败,在本模块中没有问题。
解决方法
由类内部提供接口转换后返回,再到 NetworkP53
类中实现其接口。
// ICommunicate.h
class ICommunicate
{
public:
// Qt Android 下跨模块使用 dynamic_cast 失败,由内部转换后提供
virtual IDCCommunicate* toDCCommunicate() = 0;
virtual IExCommunicate* toExCommunicate() = 0;
}