الطريقة الصحيحة لتحقق QObject المستمدة نوع فئة في كيو تي
سؤال
ويتيح القول لدي فئتين:
class A : public QObject {};
class B : public QObject {};
وبعد ذلك أذهب
QObject *a = new A();
QObject *b = new B();
والآن، كيف يمكنني التأكد من أن "أ" هو مثيل لفئة A، و "ب" هو مثيل لفئة B؟
وحاليا أفعل شيئا من هذا القبيل:
if (a->inherits(A::staticMetaObject.className())) {
...
} else if (a->inherits(A::staticMetaObject.className())) {
...
وهناك طريقة أفضل؟
المحلول
ويمكنك استخدام qobject_cast<MyClass*>(instance)
على QObject المستمدة الطبقات والتحقق من قيمة الإرجاع. إذا لا يمكن أن يلقي instance
إلى MyClass*
، ستكون قيمة الإرجاع NULL.
لا تنتمي إلى StackOverflow