Modo corretto per controllare QObject tipo di classe derivata in Qt
Domanda
Diciamo che ho un due classi:
class A : public QObject {};
class B : public QObject {};
poi vado
QObject *a = new A();
QObject *b = new B();
Ora, come faccio a fare in modo che "a" è un'istanza della classe A, e "b" è un'istanza di classe B?
Al momento faccio qualcosa di simile a questo:
if (a->inherits(A::staticMetaObject.className())) {
...
} else if (a->inherits(A::staticMetaObject.className())) {
...
c'è un modo migliore?
Soluzione
È possibile utilizzare qobject_cast<MyClass*>(instance)
su QObject classi derivate e controllare il valore di ritorno. Se instance
non può essere gettato al MyClass*
, il valore di ritorno sarà NULL.
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow