18

假设我有两个课程:

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

有没有更好的办法?

4

1 回答 1

37

您可以qobject_cast<MyClass*>(instance)在 QObject 派生类上使用并检查返回值。如果instance不能强制转换为MyClass*,则返回值为 NULL。

于 2009-10-08T11:06:03.293 回答