Правильный способ проверить тип производного класса QObject в Qt
Вопрос
Допустим, у меня есть два класса:
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.
Не связан с StackOverflow