QEnableSharedFromThis Class
template <typename T> class QEnableSharedFromThisClasse de base permettant d'obtenir un QSharedPointer pour un objet déjà géré par un pointeur partagé. Plus d'informations...
| En-tête : | #include <QEnableSharedFromThis> |
| CMake : | find_package(Qt6 REQUIRED COMPONENTS Core)target_link_libraries(mytarget PRIVATE Qt6::Core) |
| qmake : | QT += core |
Fonctions publiques
| QSharedPointer<T> | sharedFromThis() |
| QSharedPointer<const T> | sharedFromThis() const |
Description détaillée
Vous pouvez hériter de cette classe lorsque vous devez créer un QSharedPointer à partir de n'importe quelle instance d'une classe ; par exemple, à partir de l'objet lui-même. Le point essentiel est que la technique consistant à renvoyer simplement QSharedPointer<T>(this) ne peut pas être utilisée, car elle aboutit à la création de plusieurs objets QSharedPointer distincts avec des nombres de références séparés. C'est pourquoi vous ne devez jamais créer plus d'un QSharedPointer à partir du même pointeur brut.
QEnableSharedFromThis définit deux fonctions membres appelées sharedFromThis() qui renvoient un QSharedPointer<T> et QSharedPointer<const T>, en fonction de la constance, à this:
class Y: public QEnableSharedFromThis<Y> { public: QSharedPointer<Y> f() { return sharedFromThis(); } }; int main() { QSharedPointer<Y> p(new Y()); QSharedPointer<Y> y = p->f(); Q_ASSERT(p == y); // p and q must share ownership }
Il est également possible d'obtenir un pointeur partagé à partir d'un objet extérieur à la classe elle-même. Ceci est particulièrement utile dans le code qui fournit une interface aux scripts, où il n'est actuellement pas possible d'utiliser des pointeurs partagés. C'est le cas par exemple :
class ScriptInterface : public QObject { Q_OBJECT // ... public slots: void slotCalledByScript(Y *managedBySharedPointer) { QSharedPointer<Y> yPtr = managedBySharedPointer->sharedFromThis(); // Some other code unrelated to scripts that expects a QSharedPointer<Y> ... } };
Documentation des fonctions membres
QSharedPointer<T> QEnableSharedFromThis::sharedFromThis()
Si this (c'est-à-dire l'instance de sous-classe qui invoque cette méthode) est géré par un QSharedPointer, renvoie une instance de pointeur partagé pointant vers this; sinon, renvoie un QSharedPointer nul.
QSharedPointer<const T> QEnableSharedFromThis::sharedFromThis() const
Const surcharge de sharedFromThis().
Il s'agit d'une fonction surchargée.
© 2026 The Qt Company Ltd. Documentation contributions included herein are the copyrights of their respective owners. The documentation provided herein is licensed under the terms of the GNU Free Documentation License version 1.3 as published by the Free Software Foundation. Qt and respective logos are trademarks of The Qt Company Ltd. in Finland and/or other countries worldwide. All other trademarks are property of their respective owners.