我正在尝试用QT的objectCast替换我代码中的所有dynamicCasts。但我遇到了一些障碍。这是我的对象的层次结构:
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无关,因此可能会导致问题。在这一点上我可以做一个动态演员,但我宁愿不这样做。
答案 0 :(得分:3)
我认为你有三种选择:
我会选择3,因为它是最不强制的解决方案,抽象方式。