1
我试图用QT的objectCast替换我的代码中的所有dynamicCasts。但是我遇到了一些障碍。这里是我的对象的层次结构:objectCast Sideways casting
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我可以转换派生于ISize或IAbility。但是,在我的代码中,我想要执行以下转换:Derived-> ISize-> IAbility。最后一次演员是我遇到错误的地方。由于IAbility与ISize无关,因此可能会导致问题。我现在可以做一个动态演员,但我宁愿不要。
不幸的是,类在实际应用中的布局方式。该演员发生在一个不知道Derived的类中,所以我不确定这会起作用。但选项2会起作用。我确实有一个顶级的Object类,因此创建一个顶级的IObject接口,所有的接口/对象都必须实际继承,可能并不是那种糟糕的选项。谢谢。 – 2010-09-18 15:30:48
很高兴我能帮到你。祝你好运! – 2010-09-18 16:46:16