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