Die richtige Art und Weise QObject zu überprüfen abgeleiteten Klassentyp in Qt
Frage
Lets sagen, ich habe eine zwei Klassen:
class A : public QObject {};
class B : public QObject {};
dann gehe ich
QObject *a = new A();
QObject *b = new B();
Nun, wie ich sicher, dass „a“ ist eine Instanz der Klasse A, und „b“ ist eine Instanz der Klasse B?
zur Zeit ich etwas tun, wie folgt aus:
if (a->inherits(A::staticMetaObject.className())) {
...
} else if (a->inherits(A::staticMetaObject.className())) {
...
Gibt es einen besseren Weg?
Lösung
Sie können mit qobject_cast<MyClass*>(instance)
auf QObject Klassen abgeleitet und überprüfen Sie den Rückgabewert. Wenn instance
nicht MyClass*
gegossen werden kann, wird der Rückgabewert NULL.
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow