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?

¿Fue útil?

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
scroll top