QEnableSharedFromThis Class
template <typename T> class QEnableSharedFromThisUna clase base que permite obtener un QSharedPointer para un objeto ya gestionado por un puntero compartido. Más...
| Cabecera: | #include <QEnableSharedFromThis> |
| CMake: | find_package(Qt6 REQUIRED COMPONENTS Core)target_link_libraries(mytarget PRIVATE Qt6::Core) |
| qmake: | QT += core |
Funciones públicas
| QSharedPointer<T> | sharedFromThis() |
| QSharedPointer<const T> | sharedFromThis() const |
Descripción detallada
Puedes heredar esta clase cuando necesites crear un QSharedPointer desde cualquier instancia de una clase; por ejemplo, desde dentro del propio objeto. El punto clave es que no se puede utilizar la técnica de simplemente devolver QSharedPointer<T>(this), porque esto acaba creando múltiples objetos QSharedPointer distintos con recuentos de referencias separados. Por esta razón nunca debes crear más de un QSharedPointer desde el mismo puntero raw.
QEnableSharedFromThis define dos funciones miembro llamadas sharedFromThis() que devuelven un QSharedPointer<T> y QSharedPointer<const T>, dependiendo de la constness, a 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 }
También es posible obtener un puntero compartido de un objeto fuera de la propia clase. Esto es especialmente útil en código que proporciona una interfaz a scripts, donde actualmente no es posible utilizar punteros compartidos. Por ejemplo:
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> ... } };
Documentación de funciones miembro
QSharedPointer<T> QEnableSharedFromThis::sharedFromThis()
Si this (es decir, la instancia de la subclase que invoca este método) está siendo gestionada por un QSharedPointer, devuelve una instancia de puntero compartido que apunta a this; en caso contrario devuelve un QSharedPointer nulo.
QSharedPointer<const T> QEnableSharedFromThis::sharedFromThis() const
Sobrecarga constante de sharedFromThis().
Se trata de una función sobrecargada.
© 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.