2009-10-08 1 views
12

Допустим, у меня есть два класса:Правильный способ проверить QObject производный тип класса в Qt

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

тогда я иду

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

сейчас, как я могу убедиться, что «а» экземпляр класса A, а «b» - это экземпляр класса B?

В настоящее время я делаю что-то вроде этого:

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

есть лучший способ?

ответ

31

Вы можете использовать qobject_cast<MyClass*>(instance) классы, производные от QObject, и проверить возвращаемое значение. Если instance не может быть отброшено до MyClass*, возвращаемое значение будет NULL.

+1

Ну .. глядя в наследует источник функции показывает, что внутри он использует qobject_cast для проверки типа объекта –