在Qt中检查QObject派生类类型的正确方法

ak.*_*ak. 14 qt types qobject

可以说我有两个班:

class A : public QObject {};
class B : public QObject {};
Run Code Online (Sandbox Code Playgroud)

那我去

QObject *a = new A();
QObject *b = new B();
Run Code Online (Sandbox Code Playgroud)

现在,我如何确保"a"是A类的实例,而"b"是B类的实例?

目前我这样做:

if (a->inherits(A::staticMetaObject.className())) {
...
} else if (a->inherits(A::staticMetaObject.className())) {
...
Run Code Online (Sandbox Code Playgroud)

有没有更好的办法?

ere*_*der 33

您可以qobject_cast<MyClass*>(instance)在QObject派生类上使用并检查返回值.如果instance无法转换为MyClass*,则返回值将为NULL.