Правильный способ проверить тип производного класса QObject в Qt

StackOverflow https://stackoverflow.com/questions/1537080

  •  20-09-2019
  •  | 
  •  

Вопрос

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

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())) {
...

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

Это было полезно?

Решение

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top