Manera adecuada para comprobar QObject tipo clase derivada en Qt
Pregunta
Digamos que tengo un dos clases:
class A : public QObject {};
class B : public QObject {};
A continuación, voy
QObject *a = new A();
QObject *b = new B();
Ahora, ¿cómo me aseguro de que "a" es una instancia de la clase A, y "b" es una instancia de la clase B?
Actualmente hago algo como esto:
if (a->inherits(A::staticMetaObject.className())) {
...
} else if (a->inherits(A::staticMetaObject.className())) {
...
¿hay una manera mejor?
Solución
Puede utilizar qobject_cast<MyClass*>(instance)
en las clases derivadas QObject y comprobar el valor de retorno. Si instance
no se puede convertir a MyClass*
, el valor de retorno será NULL.
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow