我正在尝试用 QT 的 objectCast 替换我的代码中的所有 dynamicCast。但我遇到了一些障碍。这是我的对象的层次结构:
class ABase : public QObject
class IAbility; // Registered as Qt Interface
class ISize; // Registered as Qt Interface
class Derived : public ABase, public IAbility, public ISize; // Uses Q_INTERFACES
使用 objectCast 我可以将 Derived 转换为 ISize 或 IAbility。但是,在我的代码的一个点中,我想执行以下转换:Derived->ISize->IAbility。最后一次演员是我得到错误的地方。由于 IAbility 与 ISize 没有任何关系,这可能会导致问题。我可以在这一点上做一个动态演员,但我宁愿不做。