Sur cette page

QEnableSharedFromThis Class

template <typename T> class QEnableSharedFromThis

Classe de base permettant d'obtenir une instance de ` QSharedPointer ` pour un objet déjà géré par un pointeur partagé. En savoir plus...

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 avez besoin de créer un objet de type ` QSharedPointer ` à partir de n'importe quelle instance d'une classe ; par exemple, à partir de l' lui-même. Le paramètre de modèle T spécifie le type de la classe qui hérite de QEnableSharedFromThis. Il est important de noter que la technique consistant à simplement renvoyer QSharedPointer<T>(this) ne peut pas être utilisée, car cela aboutit à la création de plusieurs objets QSharedPointer distincts avec des comptes 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 un ` QSharedPointer<const T>`, selon le caractère constant ou non de `T`, vers ` 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 situé en dehors de la classe elle-même. Cela s’avère particulièrement utile dans le code fournissant une interface vers des scripts, où il n’est actuellement pas possible d’utiliser des pointeurs partagés. 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 la sous-classe qui appelle cette méthode) est gérée par un ` QSharedPointer`, renvoie un pointeur partagé pointant vers ` this` ; sinon, renvoie un pointeur nul ` QSharedPointer`.

QSharedPointer<const T> QEnableSharedFromThis::sharedFromThis() const

Surcharge de la fonction `sharedFromThis()` avec un argument constant.

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.