En esta página

QSharedPointer Class

template <typename T> class QSharedPointer

La clase QSharedPointer contiene una referencia fuerte a un puntero compartido. Más...

Cabecera: #include <QSharedPointer>
CMake: find_package(Qt6 REQUIRED COMPONENTS Core)
target_link_libraries(mytarget PRIVATE Qt6::Core)
qmake: QT += core

Esta clase es fuertemente comparable.

Esta clase es fuertemente comparable con QSharedPointer<X>, X*, y std::nullptr_t.

Donde X y T son tipos compatibles, lo que significa que o son iguales o uno es un tipo base del otro.

Nota: Todas las funciones de esta clase son reentrantes.

Funciones Públicas

QSharedPointer()
QSharedPointer(QSharedPointer<X> &&other)
QSharedPointer(X *ptr)
QSharedPointer(const QWeakPointer<T> &other)
QSharedPointer(std::nullptr_t)
QSharedPointer(X *ptr, Deleter d)
QSharedPointer(std::nullptr_t, Deleter d)
QSharedPointer(const QSharedPointer<T> &other)
QSharedPointer(QSharedPointer<T> &&other)
~QSharedPointer()
void clear()
QSharedPointer<X> constCast() const &
(since 6.9) QSharedPointer<X> constCast() &&
T *data() const
QSharedPointer<X> dynamicCast() const &
(since 6.9) QSharedPointer<X> dynamicCast() &&
T *get() const
bool isNull() const
QSharedPointer<X> objectCast() const &
(since 6.9) QSharedPointer<X> objectCast() &&
(since 6.7) bool owner_before(const QSharedPointer<X> &other) const
(since 6.7) bool owner_before(const QWeakPointer<X> &other) const
(since 6.7) bool owner_equal(const QSharedPointer<X> &other) const
(since 6.7) bool owner_equal(const QWeakPointer<X> &other) const
(since 6.7) size_t owner_hash() const
void reset()
void reset(T *t)
void reset(T *t, Deleter deleter)
QSharedPointer<X> staticCast() const &
(since 6.9) QSharedPointer<X> staticCast() &&
void swap(QSharedPointer<T> &other)
QWeakPointer<T> toWeakRef() const
operator bool() const
bool operator!() const
T &operator*() const
T *operator->() const
QSharedPointer<T> &operator=(QSharedPointer<T> &&other)
QSharedPointer<T> &operator=(QSharedPointer<X> &&other)
QSharedPointer<T> &operator=(const QSharedPointer<T> &other)
QSharedPointer<T> &operator=(const QWeakPointer<T> &other)

Miembros públicos estáticos

QSharedPointer<T> create(Args &&... args)
size_t qHash(const QSharedPointer<T> &key, size_t seed = 0)
QSharedPointer<X> qSharedPointerCast(const QSharedPointer<T> &other)
(since 6.9) QSharedPointer<X> qSharedPointerCast(QSharedPointer<T> &&other)
QSharedPointer<X> qSharedPointerCast(const QWeakPointer<T> &other)
QSharedPointer<X> qSharedPointerConstCast(const QSharedPointer<T> &src)
(since 6.9) QSharedPointer<X> qSharedPointerConstCast(QSharedPointer<T> &&src)
QSharedPointer<X> qSharedPointerConstCast(const QWeakPointer<T> &src)
QSharedPointer<X> qSharedPointerDynamicCast(const QSharedPointer<T> &src)
(since 6.9) QSharedPointer<X> qSharedPointerDynamicCast(QSharedPointer<T> &&src)
QSharedPointer<X> qSharedPointerDynamicCast(const QWeakPointer<T> &src)
QSharedPointer<X> qSharedPointerObjectCast(const QSharedPointer<T> &src)
(since 6.9) QSharedPointer<X> qSharedPointerObjectCast(QSharedPointer<T> &&src)
QSharedPointer<X> qSharedPointerObjectCast(const QWeakPointer<T> &src)
std::shared_ptr<X> qSharedPointerObjectCast(const std::shared_ptr<T> &src)
std::shared_ptr<X> qSharedPointerObjectCast(std::shared_ptr<T> &&src)
std::shared_ptr<X> qobject_pointer_cast(const std::shared_ptr<T> &src)
std::shared_ptr<X> qobject_pointer_cast(std::shared_ptr<T> &&src)
bool operator!=(const QSharedPointer<T> &lhs, const QSharedPointer<X> &rhs)
bool operator!=(const QSharedPointer<T> &lhs, const X *rhs)
bool operator!=(const QSharedPointer<T> &lhs, std::nullptr_t)
bool operator!=(const T *lhs, const QSharedPointer<X> &rhs)
bool operator!=(std::nullptr_t, const QSharedPointer<T> &rhs)
QDebug operator<<(QDebug debug, const QSharedPointer<T> &ptr)
bool operator==(const QSharedPointer<T> &lhs, const QSharedPointer<X> &rhs)
bool operator==(const QSharedPointer<T> &lhs, const X *rhs)
bool operator==(const QSharedPointer<T> &lhs, std::nullptr_t)
bool operator==(const T *lhs, const QSharedPointer<X> &rhs)
bool operator==(std::nullptr_t, const QSharedPointer<T> &rhs)

Descripción Detallada

QSharedPointer es un puntero automático compartido en C++. Se comporta exactamente como un puntero normal para propósitos normales, incluyendo el respeto a la constancia.

QSharedPointer borrará el puntero que está sosteniendo cuando salga del ámbito, siempre que no haya otros objetos QSharedPointer haciendo referencia a él.

Un objeto QSharedPointer puede ser creado a partir de un puntero normal, otro objeto QSharedPointer o promoviendo un objeto QWeakPointer a una referencia fuerte.

Seguridad de hilos

QSharedPointer y QWeakPointer son clases reentrantes. Esto significa que, en general, un determinado objeto QSharedPointer o QWeakPointer no puede ser accedido por múltiples hilos al mismo tiempo sin sincronización.

Diferentes objetos QSharedPointer y QWeakPointer pueden ser accedidos con seguridad por múltiples hilos al mismo tiempo. Esto incluye el caso en que contengan punteros al mismo objeto; el mecanismo de recuento de referencias es atómico, y no se requiere sincronización manual.

Debe tenerse en cuenta que, mientras que el valor del puntero se puede acceder de esta manera (es decir, por varios subprocesos al mismo tiempo, sin sincronización), QSharedPointer y QWeakPointer no proporcionan ninguna garantía sobre el objeto al que se apunta. Las reglas específicas de seguridad de hilos y reentrada para ese objeto siguen siendo aplicables.

Otras clases de punteros

Qt también proporciona otras dos clases de punteros: QPointer y QSharedDataPointer. Son incompatibles entre sí, ya que cada una tiene un caso de uso muy diferente.

QSharedPointer mantiene un puntero compartido mediante un contador de referencias externo (es decir, un contador de referencias situado fuera del objeto). Como su nombre indica, el valor del puntero es compartido entre todas las instancias de QSharedPointer y QWeakPointer. Sin embargo, el contenido del objeto apuntado por el puntero no debe considerarse compartido: sólo hay un objeto. Por esa razón, QSharedPointer no proporciona una forma de separar o hacer copias del objeto apuntado.

QSharedDataPointer, por otro lado, mantiene un puntero a datos compartidos (es decir, una clase derivada de QSharedData). Lo hace mediante un contador de referencias interno, situado en la clase base QSharedData. Esta clase puede, por tanto, separarse en función del tipo de acceso realizado a los datos custodiados: si se trata de un acceso no-const, crea una copia atómicamente para que la operación se complete.

QExplicitlySharedDataPointer es una variante de QSharedDataPointer, excepto que sólo se separa si se llama explícitamente a QExplicitlySharedDataPointer::detach() (de ahí el nombre).

QScopedPointer simplemente mantiene un puntero a un objeto asignado al heap y lo elimina en su destructor. Esta clase es útil cuando un objeto necesita ser asignado al heap y borrado, pero nada más. QScopedPointer es ligero, no hace uso de estructuras adicionales o conteo de referencias.

Por último, QPointer mantiene un puntero a un objeto derivado de QObject, pero lo hace de forma débil. QWeakPointer tiene la misma funcionalidad, pero su uso para esa función está obsoleto.

Seguimiento opcional de punteros

Una característica de QSharedPointer que puede ser habilitada en tiempo de compilación para propósitos de depuración es un mecanismo de rastreo de punteros. Cuando se activa, QSharedPointer registra en un conjunto global todos los punteros que rastrea. Esto permite detectar errores como asignar el mismo puntero a dos objetos QSharedPointer.

Esta función se habilita definiendo la macro QT_SHAREDPOINTER_TRACK_POINTERS antes de incluir la cabecera QSharedPointer.

Es seguro utilizar esta función incluso con código compilado sin la función. QSharedPointer asegurará que el puntero sea eliminado del rastreador incluso desde código compilado sin rastreo de punteros.

Tenga en cuenta, sin embargo, que la característica de rastreo de punteros tiene limitaciones en la herencia múltiple o virtual (es decir, en los casos en que dos direcciones de puntero diferentes pueden referirse al mismo objeto). En ese caso, si un puntero es convertido a un tipo diferente y su valor cambia, el mecanismo de rastreo de punteros de QSharedPointer puede fallar al detectar que el objeto rastreado es el mismo.

Ver también QSharedDataPointer, QWeakPointer, QScopedPointer, y QEnableSharedFromThis.

Documentación de funciones miembro

QSharedPointer::QSharedPointer()

Crea un QSharedPointer que es nulo (el objeto contiene una referencia a nullptr).

[noexcept] template <typename X> QSharedPointer::QSharedPointer(QSharedPointer<X> &&other)

Move-construye una instancia de QSharedPointer, haciendo que apunte al mismo objeto que other estaba apuntando.

Restricciones

Participa en la resolución de sobrecargas sólo si X* se convierte implícitamente en T*.

[explicit] template <typename X> QSharedPointer::QSharedPointer(X *ptr)

Crea un QSharedPointer que apunta a ptr. El puntero ptr pasa a ser gestionado por este QSharedPointer y no debe ser pasado a otro objeto QSharedPointer o borrado fuera de este objeto.

Desde Qt 5.8, cuando la última referencia a este QSharedPointer se destruye, ptr se borrará llamando al destructor de X(incluso si X no es el mismo que el parámetro de plantilla de QSharedPointer T). Anteriormente, se llamaba al destructor de T.

QSharedPointer::QSharedPointer(const QWeakPointer<T> &other)

Crea un QSharedPointer promoviendo la referencia débil other a referencia fuerte y compartiendo su puntero.

Si T es un tipo derivado del parámetro de plantilla de esta clase, QSharedPointer realizará un cast automático. En caso contrario, obtendrá un error de compilador.

Véase también QWeakPointer::toStrongRef().

QSharedPointer::QSharedPointer(std::nullptr_t)

Crea un QSharedPointer que es null. Esto es equivalente al constructor por defecto de QSharedPointer.

template <typename X, typename Deleter> QSharedPointer::QSharedPointer(X *ptr, Deleter d)

Crea un QSharedPointer que apunta a ptr. El puntero ptr pasa a ser gestionado por este QSharedPointer y no debe ser pasado a otro objeto QSharedPointer o borrado fuera de este objeto.

El parámetro deleter d especifica el deleter personalizado para este objeto. El eliminador personalizado es llamado, en lugar del operador delete(), cuando la cuenta de referencias fuertes cae a 0. Esto es útil, por ejemplo, para llamar a deleteLater() en un QObject en su lugar:

static void doDeleteLater(MyObject *obj)
{
    obj->deleteLater();
}

void otherFunction()
{
    QSharedPointer<MyObject> obj =
        QSharedPointer<MyObject>(new MyObject, doDeleteLater);

    // continue using obj
    obj.clear();    // calls obj->deleteLater();
}

Tenga en cuenta que la función de borrado personalizado se llamará con un puntero al tipo X, incluso si el parámetro de plantilla QSharedPointer T no es el mismo.

También es posible especificar una función miembro directamente, como en:

QSharedPointer<MyObject> obj =
    QSharedPointer<MyObject>(new MyObject, &QObject::deleteLater);

Véase también clear().

template <typename Deleter> QSharedPointer::QSharedPointer(std::nullptr_t, Deleter d)

Crea un QSharedPointer que es null. Esto es equivalente al constructor por defecto de QSharedPointer.

El parámetro deleter d especifica el deleter personalizado para este objeto. El eliminador personalizado es llamado, en lugar del operador delete(), cuando la cuenta de referencias fuertes cae a 0.

QSharedPointer::QSharedPointer(const QSharedPointer<T> &other)

Crea un objeto QSharedPointer que comparte el puntero de other.

Si T es un tipo derivado del parámetro de plantilla de esta clase, QSharedPointer realizará un cast automático. En caso contrario, obtendrá un error del compilador.

[noexcept] QSharedPointer::QSharedPointer(QSharedPointer<T> &&other)

Move-construye una instancia de QSharedPointer, haciendo que apunte al mismo objeto al que apuntaba other.

QSharedPointer::~QSharedPointer()

Destruye este objeto QSharedPointer. Si es la última referencia al puntero almacenada, esto borrará el puntero también.

void QSharedPointer::clear()

Borra este objeto QSharedPointer, eliminando la referencia que haya podido tener al puntero. Si ésta era la última referencia, entonces se borrará el propio puntero.

template <typename X> QSharedPointer<X> QSharedPointer::constCast() const &

Realiza un const_cast desde el tipo de este puntero a X y devuelve un QSharedPointer que comparte la referencia. Esta función se puede utilizar tanto para up-casting como para down-casting, pero es más útil para up-casting.

Véase también isNull() y qSharedPointerConstCast().

[since 6.9] template <typename X> QSharedPointer<X> QSharedPointer::constCast() &&

El QSharedPointer devuelto comparte la propiedad con el mismo conjunto de propietarios compartidos que *this.

Esta función resets *this a nullptr en caso de éxito.

Esta función sobrecarga QSharedPointer::constCast().

Esta función se introdujo en Qt 6.9.

Véase también isNull() y qSharedPointerConstCast().

[static] template <typename... Args> QSharedPointer<T> QSharedPointer::create(Args &&... args)

Crea un objeto QSharedPointer y asigna un nuevo elemento de tipo T. Los internos de QSharedPointer y el objeto se asignan en una única asignación de memoria, lo que podría ayudar a reducir la fragmentación de memoria en una aplicación de larga ejecución.

Esta función intentará llamar a un constructor para el tipo T que pueda aceptar todos los argumentos pasados (args). Los argumentos serán perfectamente reenviados.

T *QSharedPointer::data() const

Devuelve el valor del puntero referenciado por este objeto.

Nota: no borre el puntero devuelto por esta función ni lo pase a otra función que pudiera borrarlo, incluida la creación de objetos QSharedPointer o QWeakPointer.

template <typename X> QSharedPointer<X> QSharedPointer::dynamicCast() const &

Realiza una conversión dinámica del tipo de este puntero a X y devuelve un QSharedPointer que comparte la referencia. Si esta función se utiliza para realizar un up-cast, entonces QSharedPointer realizará un dynamic_cast, lo que significa que si el objeto apuntado por este QSharedPointer no es del tipo X, el objeto devuelto será null.

Nota: el tipo de plantilla X debe tener los mismos calificadores const y volatile que la plantilla de este objeto, o el cast fallará. Utilice constCast() si necesita eliminar esos calificadores.

Véase también qSharedPointerDynamicCast().

[since 6.9] template <typename X> QSharedPointer<X> QSharedPointer::dynamicCast() &&

El QSharedPointer devuelto comparte la propiedad con el mismo conjunto de propietarios compartidos que *this.

Esta función resets *this a nullptr en caso de éxito.

Esta función sobrecarga QSharedPointer::dynamicCast().

Esta función se introdujo en Qt 6.9.

Véase también qSharedPointerDynamicCast().

T *QSharedPointer::get() const

Igual que data().

Esta función se proporciona por compatibilidad de la API con std::shared_ptr.

bool QSharedPointer::isNull() const

Devuelve true si este objeto hace referencia a nullptr.

template <typename X> QSharedPointer<X> QSharedPointer::objectCast() const &

Realiza un qobject_cast() desde el tipo de este puntero a X y devuelve un QSharedPointer que comparte la referencia. Si esta función se utiliza para up-cast, entonces QSharedPointer realizará un qobject_cast, lo que significa que si el objeto apuntado por este QSharedPointer no es del tipo X, el objeto devuelto será null.

Nota: el tipo de plantilla X debe tener los mismos calificadores const y volatile que la plantilla de este objeto, o el cast fallará. Utilice constCast() si necesita eliminar esos calificadores.

Véase también qSharedPointerObjectCast().

[since 6.9] template <typename X> QSharedPointer<X> QSharedPointer::objectCast() &&

El QSharedPointer devuelto comparte la propiedad con el mismo conjunto de propietarios compartidos que *this.

Esta función resets *this a nullptr en caso de éxito.

Esta función sobrecarga QSharedPointer::objectCast().

Esta función se introdujo en Qt 6.9.

Véase también qSharedPointerObjectCast().

[noexcept, since 6.7] template <typename X> bool QSharedPointer::owner_before(const QSharedPointer<X> &other) const

[noexcept, since 6.7] template <typename X> bool QSharedPointer::owner_before(const QWeakPointer<X> &other) const

Devuelve true si y sólo si este puntero inteligente precede a other en un orden basado en el propietario definido por la implementación. El orden es tal que dos punteros inteligentes se consideran equivalentes si ambos están vacíos o si ambos poseen el mismo objeto (incluso si su tipo aparente y puntero son diferentes).

Estas funciones se introdujeron en Qt 6.7.

Véase también owner_equal.

[noexcept, since 6.7] template <typename X> bool QSharedPointer::owner_equal(const QSharedPointer<X> &other) const

[noexcept, since 6.7] template <typename X> bool QSharedPointer::owner_equal(const QWeakPointer<X> &other) const

Devuelve true si y sólo si este puntero inteligente y other comparten propiedad.

Estas funciones se introdujeron en Qt 6.7.

Véase también owner_before y owner_hash.

[noexcept, since 6.7] size_t QSharedPointer::owner_hash() const

Devuelve un valor hash basado en el propietario para este objeto puntero inteligente. Los punteros inteligentes que se comparan igual (según owner_equal) tendrán un hash basado en propietario idéntico.

Esta función se introdujo en Qt 6.7.

Véase también owner_equal.

void QSharedPointer::reset()

Igual que clear(). Para compatibilidad con std::shared_ptr.

void QSharedPointer::reset(T *t)

Restablece este objeto QSharedPointer para que apunte a t. Equivalente a:

QSharedPointer<T> other(t); this->swap(other);

template <typename Deleter> void QSharedPointer::reset(T *t, Deleter deleter)

Restablece este objeto QSharedPointer para que apunte a t en su lugar, con el Supresor deleter. Equivalente a:

QSharedPointer<T> other(t, deleter); this->swap(other);

template <typename X> QSharedPointer<X> QSharedPointer::staticCast() const &

Realiza una conversión estática del tipo de este puntero a X y devuelve un QSharedPointer que comparte la referencia. Esta función se puede utilizar para up-casting y down-casting, pero es más útil para up-casting.

Nota: el tipo de plantilla X debe tener los mismos calificadores const y volatile que la plantilla de este objeto, o la conversión fallará. Utilice constCast() si necesita eliminar esos calificadores.

Véase también dynamicCast(), constCast(), y qSharedPointerCast().

[since 6.9] template <typename X> QSharedPointer<X> QSharedPointer::staticCast() &&

El QSharedPointer devuelto comparte la propiedad con el mismo conjunto de propietarios compartidos que *this.

Esta función resets *this a nullptr en caso de éxito.

Esta función sobrecarga QSharedPointer::staticCast().

Esta función se introdujo en Qt 6.9.

Ver también dynamicCast(), constCast(), y qSharedPointerCast().

[noexcept] void QSharedPointer::swap(QSharedPointer<T> &other)

Intercambia esta instancia de puntero compartido con other. Esta operación es muy rápida y nunca falla.

QWeakPointer<T> QSharedPointer::toWeakRef() const

Devuelve un objeto de referencia débil que comparte el puntero referenciado por este objeto.

Véase también QWeakPointer::QWeakPointer().

QSharedPointer::operator bool() const

Devuelve true si el puntero contenido no es nullptr. Esta función es adecuada para su uso en if-constructs, como:

if (sharedptr) { /*...*/ }

Véase también isNull().

bool QSharedPointer::operator!() const

Devuelve true si este objeto hace referencia a nullptr. Esta función es adecuada para su uso en if-constructs, como:

if (!sharedptr) { /*...*/ }

Véase también isNull().

T &QSharedPointer::operator*() const

Proporciona acceso a los miembros del puntero compartido.

Si el puntero contenido es nullptr, el comportamiento es indefinido.

Véase también isNull().

T *QSharedPointer::operator->() const

Proporciona acceso a los miembros del puntero compartido.

Si el puntero contenido es nullptr, el comportamiento es indefinido.

Véase también isNull().

[noexcept] QSharedPointer<T> &QSharedPointer::operator=(QSharedPointer<T> &&other)

Mover-asigna other a esta instancia QSharedPointer.

[noexcept] template <typename X> QSharedPointer<T> &QSharedPointer::operator=(QSharedPointer<X> &&other)

Mover: asigna other a esta instancia de QSharedPointer.

Restricciones

Participa en la resolución de sobrecargas sólo si X* se convierte implícitamente en T*.

QSharedPointer<T> &QSharedPointer::operator=(const QSharedPointer<T> &other)

Hace que este objeto comparta el puntero de other. La referencia de puntero actual se descarta y, si era la última, el puntero se borrará.

Si T es un tipo derivado del parámetro de plantilla de esta clase, QSharedPointer realizará un cast automático. En caso contrario, obtendrá un error del compilador.

QSharedPointer<T> &QSharedPointer::operator=(const QWeakPointer<T> &other)

Promueve other a una referencia fuerte y hace que este objeto comparta una referencia al puntero referenciado por él. La referencia al puntero actual se descarta y, si era la última, el puntero se borrará.

Si T es un tipo derivado del parámetro de plantilla de esta clase, QSharedPointer realizará un cast automático. En caso contrario, obtendrá un error del compilador.

No miembros relacionados

[noexcept] template <typename T> size_t qHash(const QSharedPointer<T> &key, size_t seed = 0)

Devuelve el valor hash para key, utilizando seed para sembrar el cálculo.

template <typename X, typename T> QSharedPointer<X> qSharedPointerCast(const QSharedPointer<T> &other)

Devuelve un puntero compartido al puntero contenido en other, convertido al tipo X. Los tipos T y X deben pertenecer a una misma jerarquía para que static_cast tenga éxito.

Tenga en cuenta que X debe tener los mismos calificadores cv (const y volatile) que T, o el código no podrá compilarse. Utilice qSharedPointerConstCast para desechar la constness.

Véase también QSharedPointer::staticCast(), qSharedPointerDynamicCast(), y qSharedPointerConstCast().

[since 6.9] template <typename X, typename T> QSharedPointer<X> qSharedPointerCast(QSharedPointer<T> &&other)

El QSharedPointer devuelto comparte la propiedad con el mismo conjunto de propietarios compartidos que other.

Esta función resets other a nullptr en caso de éxito.

Esta función sobrecarga QSharedPointer::qSharedPointerCast(const QSharedPointer<T> &other).

Esta función se introdujo en Qt 6.9.

Ver también QSharedPointer::staticCast(), qSharedPointerDynamicCast(), y qSharedPointerConstCast().

template <typename X, typename T> QSharedPointer<X> qSharedPointerCast(const QWeakPointer<T> &other)

Devuelve un puntero compartido al puntero contenido en other, convertido al tipo X. Los tipos T y X deben pertenecer a una misma jerarquía para que static_cast tenga éxito.

El objeto other se convierte primero en una referencia fuerte. Si esa conversión falla (porque el objeto al que apunta ya ha sido eliminado), esta función devuelve un QSharedPointer nulo.

Tenga en cuenta que X debe tener los mismos calificadores cv (const y volatile) que T, o el código no podrá compilarse. Utilice qSharedPointerConstCast para desechar la constness.

Véase también QWeakPointer::toStrongRef(), qSharedPointerDynamicCast(), y qSharedPointerConstCast().

template <typename X, typename T> QSharedPointer<X> qSharedPointerConstCast(const QSharedPointer<T> &src)

Devuelve un puntero compartido al puntero contenido en src, convertido al tipo X. Los tipos T y X deben pertenecer a una misma jerarquía para que const_cast tenga éxito. Las diferencias const y volatile entre T y X se ignoran.

Véase también QSharedPointer::constCast(), qSharedPointerCast(), y qSharedPointerDynamicCast().

[since 6.9] template <typename X, typename T> QSharedPointer<X> qSharedPointerConstCast(QSharedPointer<T> &&src)

El QSharedPointer devuelto comparte la propiedad con el mismo conjunto de propietarios compartidos que src.

Esta función resets src a nullptr en caso de éxito.

Esta función sobrecarga QSharedPointer::qSharedPointerConstCast(const QSharedPointer<T> &src).

Esta función se introdujo en Qt 6.9.

Ver también QSharedPointer::constCast(), qSharedPointerCast(), y qSharedPointerDynamicCast().

template <typename X, typename T> QSharedPointer<X> qSharedPointerConstCast(const QWeakPointer<T> &src)

Devuelve un puntero compartido al puntero contenido en src, convertido al tipo X. Los tipos T y X deben pertenecer a una misma jerarquía para que const_cast tenga éxito. Las diferencias const y volatile entre T y X se ignoran.

El objeto src se convierte primero en una referencia fuerte. Si esa conversión falla (porque el objeto al que apunta ya ha sido eliminado), esta función devuelve un QSharedPointer nulo.

Véase también QWeakPointer::toStrongRef(), qSharedPointerCast() y qSharedPointerDynamicCast().

template <typename X, typename T> QSharedPointer<X> qSharedPointerDynamicCast(const QSharedPointer<T> &src)

Devuelve un puntero compartido al puntero mantenido por src, utilizando un casting dinámico al tipo X para obtener un puntero interno del tipo apropiado. Si dynamic_cast falla, el objeto devuelto será null.

Observe que X debe tener los mismos calificadores cv (const y volatile) que T, o el código fallará al compilar. Utilice qSharedPointerConstCast para desechar la constness.

Véase también QSharedPointer::dynamicCast(), qSharedPointerCast(), y qSharedPointerConstCast().

[since 6.9] template <typename X, typename T> QSharedPointer<X> qSharedPointerDynamicCast(QSharedPointer<T> &&src)

El QSharedPointer devuelto comparte la propiedad con el mismo conjunto de propietarios compartidos que src.

Esta función resets src a nullptr en caso de éxito.

Esta función sobrecarga QSharedPointer::qSharedPointerDynamicCast(const QSharedPointer<T> &src).

Esta función se introdujo en Qt 6.9.

Ver también QSharedPointer::dynamicCast(), qSharedPointerCast(), y qSharedPointerConstCast().

template <typename X, typename T> QSharedPointer<X> qSharedPointerDynamicCast(const QWeakPointer<T> &src)

Devuelve un puntero compartido al puntero mantenido por src, utilizando un casting dinámico al tipo X para obtener un puntero interno del tipo apropiado. Si dynamic_cast falla, el objeto devuelto será null.

El objeto src se convierte primero en una referencia fuerte. Si esa conversión falla (porque el objeto al que apunta ya ha sido eliminado), esta función también devuelve un QSharedPointer nulo.

Tenga en cuenta que X debe tener los mismos calificadores cv (const y volatile) que T, o el código no podrá compilarse. Utilice qSharedPointerConstCast para desechar la constness.

Véase también QWeakPointer::toStrongRef(), qSharedPointerCast(), y qSharedPointerConstCast().

template <typename X, typename T> QSharedPointer<X> qSharedPointerObjectCast(const QSharedPointer<T> &src)

La función qSharedPointerObjectCast sirve para convertir un puntero compartido.

Devuelve un puntero compartido al puntero mantenido por src, utilizando un qobject_cast() al tipo X para obtener un puntero interno del tipo apropiado. Si qobject_cast falla, el objeto devuelto será null.

Observe que X debe tener los mismos calificadores cv (const y volatile) que T, o el código fallará al compilar. Utilice qSharedPointerConstCast para desechar la constness.

Véase también QSharedPointer::objectCast(), qSharedPointerCast(), y qSharedPointerConstCast().

[since 6.9] template <typename X, typename T> QSharedPointer<X> qSharedPointerObjectCast(QSharedPointer<T> &&src)

El QSharedPointer devuelto comparte la propiedad con el mismo conjunto de propietarios compartidos que src.

Esta función resets src a nullptr en caso de éxito.

Esta función sobrecarga QSharedPointer::qSharedPointerObjectCast(const QSharedPointer<T> &src).

Esta función se introdujo en Qt 6.9.

Ver también QSharedPointer::objectCast(), qSharedPointerCast(), y qSharedPointerConstCast().

template <typename X, typename T> QSharedPointer<X> qSharedPointerObjectCast(const QWeakPointer<T> &src)

La función qSharedPointerObjectCast sirve para convertir un puntero compartido.

Devuelve un puntero compartido al puntero mantenido por src, utilizando un qobject_cast() al tipo X para obtener un puntero interno del tipo apropiado. Si el qobject_cast falla, el objeto devuelto será null.

El objeto src se convierte primero en una referencia fuerte. Si esa conversión falla (porque el objeto al que apunta ya ha sido borrado), esta función también devuelve un QSharedPointer nulo.

Tenga en cuenta que X debe tener los mismos calificadores cv (const y volatile) que T, o el código no podrá compilarse. Utilice qSharedPointerConstCast para desechar la constness.

Véase también QWeakPointer::toStrongRef(), qSharedPointerCast(), y qSharedPointerConstCast().

template <typename X, typename T> std::shared_ptr<X> qSharedPointerObjectCast(const std::shared_ptr<T> &src)

Devuelve un puntero compartido al puntero mantenido por src, utilizando un qobject_cast() al tipo X para obtener un puntero interno del tipo apropiado. Si qobject_cast falla, el objeto devuelto será null.

Tenga en cuenta que X debe tener los mismos calificadores cv (const y volatile) que T, o el código fallará al compilar. Utilice const_pointer_cast para eliminar la constancia.

template <typename X, typename T> std::shared_ptr<X> qSharedPointerObjectCast(std::shared_ptr<T> &&src)

Devuelve un puntero compartido al puntero mantenido por src, utilizando un qobject_cast() al tipo X para obtener un puntero interno del tipo apropiado.

Si qobject_cast tiene éxito, la función devolverá un puntero compartido válido, y src se restablecerá a null. Si qobject_cast falla, el objeto devuelto será null, y src no se modificará.

Tenga en cuenta que X debe tener los mismos calificadores cv (const y volatile) que T, o el código fallará al compilar. Utilice const_pointer_cast para eliminar la constancia.

template <typename X, typename T> std::shared_ptr<X> qobject_pointer_cast(const std::shared_ptr<T> &src)

Devuelve un puntero compartido al puntero mantenido por src.

Igual que qSharedPointerObjectCast(). Esta función se proporciona por compatibilidad con la STL.

template <typename X, typename T> std::shared_ptr<X> qobject_pointer_cast(std::shared_ptr<T> &&src)

Igual que qSharedPointerObjectCast(). Esta función se proporciona por compatibilidad con STL.

template <typename T, typename X> bool operator!=(const QSharedPointer<T> &lhs, const QSharedPointer<X> &rhs)

Devuelve true si lhs y rhs se refieren a punteros distintos.

Si el parámetro de plantilla de rhs es diferente del de lhs, QSharedPointer necesita primero asegurarse de que son tipos compatibles. Intentará realizar un static_cast automático para convertir los tipos T y X a su tipo de puntero compuesto. Si el parámetro de plantilla de rhs'no es un tipo base o derivado de lhs's, obtendrá un error del compilador.

template <typename T, typename X> bool operator!=(const QSharedPointer<T> &lhs, const X *rhs)

Devuelve true si lhs y rhs se refieren a punteros distintos.

Si el parámetro de plantilla de rhs es diferente del de lhs, QSharedPointer necesita primero asegurarse de que son tipos compatibles. Intentará realizar un static_cast automático para convertir los tipos T y X a su tipo de puntero compuesto. Si el parámetro de plantilla de rhs'no es un tipo base o derivado de lhs's, obtendrá un error del compilador.

template <typename T> bool operator!=(const QSharedPointer<T> &lhs, std::nullptr_t)

Devuelve true si lhs se refiere a un puntero válido (es decir, no nulo).

Véase también QSharedPointer::isNull().

template <typename T, typename X> bool operator!=(const T *lhs, const QSharedPointer<X> &rhs)

Devuelve true si el puntero lhs no es el mismo puntero al que hace referencia rhs.

Si el parámetro de plantilla de rhs es diferente del de lhs, QSharedPointer necesita primero asegurarse de que son tipos compatibles. Intentará realizar un static_cast automático para convertir los tipos T y X a su tipo de puntero compuesto. Si el parámetro de plantilla de rhs'no es un tipo base o derivado de lhs's, obtendrá un error del compilador.

template <typename T> bool operator!=(std::nullptr_t, const QSharedPointer<T> &rhs)

Devuelve true si rhs se refiere a un puntero válido (es decir, no nulo).

Véase también QSharedPointer::isNull().

template <typename T> QDebug operator<<(QDebug debug, const QSharedPointer<T> &ptr)

Escribe el puntero rastreado por ptr en el objeto de depuración debug con fines de depuración.

Véase también Técnicas de depuración.

template <typename T, typename X> bool operator==(const QSharedPointer<T> &lhs, const QSharedPointer<X> &rhs)

Devuelve true si lhs y rhs se refieren al mismo puntero.

Si el parámetro de plantilla de rhs es diferente del de lhs, QSharedPointer primero necesita asegurarse de que son tipos compatibles. Intentará realizar un static_cast automático para convertir los tipos T y X a su tipo de puntero compuesto. Si el parámetro de plantilla de rhs'no es un tipo base o derivado de lhs's, obtendrá un error del compilador.

template <typename T, typename X> bool operator==(const QSharedPointer<T> &lhs, const X *rhs)

Devuelve true si lhs y rhs se refieren al mismo puntero.

Si el parámetro de plantilla de rhs es diferente del de lhs, QSharedPointer primero necesita asegurarse de que son tipos compatibles. Intentará realizar un static_cast automático para convertir los tipos T y X a su tipo de puntero compuesto. Si el parámetro de plantilla de rhs'no es un tipo base o derivado de lhs's, obtendrá un error del compilador.

template <typename T> bool operator==(const QSharedPointer<T> &lhs, std::nullptr_t)

Devuelve true si lhs hace referencia a nullptr.

Véase también QSharedPointer::isNull().

template <typename T, typename X> bool operator==(const T *lhs, const QSharedPointer<X> &rhs)

Devuelve true si el puntero lhs es el mismo puntero al que hace referencia rhs.

Si el parámetro de plantilla de rhs es diferente del de lhs, QSharedPointer primero necesita asegurarse de que son tipos compatibles. Intentará realizar un static_cast automático para convertir los tipos T y X a su tipo de puntero compuesto. Si el parámetro de plantilla de rhs'no es un tipo base o derivado de lhs's, obtendrá un error del compilador.

template <typename T> bool operator==(std::nullptr_t, const QSharedPointer<T> &rhs)

Devuelve true si rhs hace referencia a nullptr.

Véase también QSharedPointer::isNull().

© 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.