Une bonne façon de vérifier QObject type de classe dérivée dans Qt
Question
Disons que j'ai deux classes:
class A : public QObject {};
class B : public QObject {};
je vais
QObject *a = new A();
QObject *b = new B();
maintenant, comment puis-je faire en sorte que « a » est une instance de la classe A, et « b » est une instance de la classe B?
actuellement je fais quelque chose comme ceci:
if (a->inherits(A::staticMetaObject.className())) {
...
} else if (a->inherits(A::staticMetaObject.className())) {
...
est-il une meilleure façon?
La solution
Vous pouvez utiliser qobject_cast<MyClass*>(instance)
sur les classes dérivées QObject et vérifier la valeur de retour. Si instance
ne peut pas être jeté à MyClass*
, la valeur de retour sera NULL.
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow