Правильный способ проверить тип производного класса QObject в Qt - PullRequest
13 голосов
/ 08 октября 2009

Допустим, у меня есть два класса:

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

тогда я иду

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

Теперь, как мне убедиться, что "a" является экземпляром класса A, а "b" является экземпляром класса B?

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

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

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

1 Ответ

32 голосов
/ 08 октября 2009

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

...