18

私には2つのクラスがあるとしましょう:

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 に答える