Qu'est-ce que qobject_cast?
Quelqu'un pourrait-il expliquer en termes simples que possible (ou aussi simple que vous le souhaitez) ce qobject_cast
est, ce qu'il fait et pourquoi nous avons besoin de jeter un type de classe à une autre?
Comme, je reçois typecasting dans le sens de la coulée d'une int
comme un char
ou QString
peut-être à utiliser QMessageBox
, mais pourquoi jeté dans les différentes classes?
Vous devez vous connecter pour publier un commentaire.
Avant de commencer à apprendre ce que
qobject_cast
est, vous devez savoir ce que C++dedynamic_cast
est. Dynamic cast est tout au sujet de le polymorphisme.C++dynamic cast utilise RTTI (Run Time Type Information) pour effectuer un cast d'un objet. Mais
qobject_cast
fait sans RTTI.Quelle est la dynamique de fonte?
Par exemple, supposons que nous avons une usine de voitures de fonction. Comme ceci:
Noter que
BmwCar
etAudiCar
classes héritentCar
classe. L'utilisation de cette fonction, nous pouvons faire différentes voitures seulement en utilisant une fonction. Par exemple:Sans
dynamic_cast
vous ne serez pas en mesure de déterminer sicar
est unBmwCar
ou unAudiCar
.Ce qui est différent entre
dynamic_cast
etqobject_cast
?qobject_cast
peut être utilisé uniquement avecQObject
les classes dérivées avoirmacro q_object
macro.qobject_cast
ne pas utiliser RTTI.qobject_cast
est la même chose quedynamic_cast
, mais ne fonctionne que pour les enfants deQObject
. Il ne nécessite pas RTTI et il fonctionne beaucoup plus rapidement, car il n'est pas possible d'utiliserQObject
dans l'héritage multiple.N'hésitez pas à faire un auto-recherche et lire quelques-unes des choses de base sur la programmation orientée objet et C++. En particulier sur le polymorphisme. Et ne pas hestiate à lire la documentation de Qt, il contient beaucoup de facile-à-comprendre des exemples.
Un ressentiment de l'utilisation de
qobject_cast
est d'obtenir un pointeur vers une classe à l'intérieur d'un logement: