2009-10-08 63 views
12

可以說我有一兩個類:正確的方法來檢查QObject的派生類類型的Qt

class A : public QObject {}; 
class B : public QObject {}; 

然後我去

QObject *a = new A(); 
QObject *b = new B(); 

現在,我該如何確保「一」是類A的一個實例,「b」是類B的一個實例?

目前我做這樣的事情:

if (a->inherits(A::staticMetaObject.className())) { 
... 
} else if (a->inherits(A::staticMetaObject.className())) { 
... 

有沒有更好的辦法?

回答

31

您可以在QObject派生類上使用qobject_cast<MyClass*>(instance)並檢查返回值。如果instance不能轉換爲MyClass*,則返回值將爲NULL。

+1

那麼..看着繼承函數源顯示,它在內部使用qobject_cast 來驗證對象類型 – 2010-01-05 14:07:56