2009-10-08 7 views
12

Digamos que tengo un dos clases:manera adecuada para comprobar QObject tipo de clase derivada en Qt

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

luego voy

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

ahora, ¿Cómo puedo estar seguro de que "a" es una instancia de clase A, y "b" es una instancia de clase B?

Actualmente hago algo como esto:

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

hay una manera mejor?

Respuesta

31

Puede usar qobject_cast<MyClass*>(instance) en clases derivadas de QObject y comprobar el valor de retorno. Si instance no se puede convertir a MyClass*, el valor de retorno será NULL.

+1

Bueno ... investigando hereda la fuente de la función muestra que internamente usa qobject_cast para verificar el tipo de objeto –

Cuestiones relacionadas