2009-10-08 11 views
12

überprüfen Können sagen, ich habe eine zwei Klassen:Richtige Art und Weise QObject abgeleiteten Klasse Typen in Qt

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

dann gehe ich

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

jetzt, wie kann ich sicherstellen, dass „a“ eine Instanz der Klasse A, und "b" ist eine Instanz der Klasse B?

momentan mache ich so etwas wie dieses:

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

gibt es einen besseren Weg?

Antwort

31

Sie können qobject_cast<MyClass*>(instance) für QObject-abgeleitete Klassen verwenden und den Rückgabewert überprüfen. Wenn instance nicht in MyClass* umgewandelt werden kann, ist der Rückgabewert NULL.

+1

Gut .. Blick in die Funktionserbenerben zeigt, dass intern verwendet qobject_cast , um den Objekttyp zu überprüfen –

Verwandte Themen