std::bad_weak_ptr
Definido en el archivo de encabezado <memory>
|
||
class bad_weak_ptr; |
(desde C++11) | |
std::bad_weak_ptr
es el tipo de objeto lanzado como excepción por los constructores de std::shared_ptr que toman std::weak_ptr como argumento, cuando el std::weak_ptr se refiere a un objeto ya eliminado.
Contenido |
[editar] Funciones miembro
(constructor) |
Construye un nuevo objeto bad_weak_ptr . (función miembro pública) |
operator= |
Reemplaza el objeto bad_weak_ptr . (función miembro pública) |
what |
Devuelve la cadena aclaratoria. (función miembro pública) |
std::bad_weak_ptr::bad_weak_ptr
bad_weak_ptr() noexcept; |
(1) | (desde C++11) |
bad_weak_ptr( const bad_weak_ptr& other ) noexcept; |
(2) | (desde C++11) |
Construye un nuevo objeto bad_weak_ptr
con una cadena de bytes terminada en nulo definida por la implementación, que es accesible a través de what().
*this
como other
tienen un tipo dinámico std::bad_weak_ptr
, entonces std::strcmp(what(), other.what()) == 0.Parámetros
other | - | El otro objeto de excepción del que copiar. |
std::bad_weak_ptr::operator=
bad_weak_ptr& operator=( const bad_weak_ptr& other ) noexcept; |
(desde C++11) | |
Asigna el contenido con el de other
. Si tanto *this
como other
tienen el tipo dinámico std::bad_weak_ptr
, entonces std::strcmp(what(), other.what()) == 0 después de la asignación.
Parámetros
other | - | Otro objeto excepción con el cual asignar. |
Valor de retorno
*this
std::bad_weak_ptr::what
virtual const char* what() const noexcept; |
(desde C++11) | |
Devuelve la cadena aclaratoria.
Parámetros
(Ninguno)
Valor de retorno
Un puntero a una cadena terminada en nulo con información aclaratoria. La cadena es adecuada para convertirse y mostrarse como un std::wstring. Se garantiza que el puntero sea válido al menos hasta que el objeto excepción del cual se obtuvo se destruya, o hasta que una función miembro no const (p. ej., el operador de asignación de copia) se llame en el objeto excepción.
Notas
Se permite, pero no se requiere, que las implementaciones redefinan a what()
.
Heredado de std::exception
Funciones miembro
[virtual] |
Destruye el objeto excepción. (función miembro virtual pública de std::exception )
|
[virtual] |
Devuelve una cadena aclaratoria. (función miembro virtual pública de std::exception )
|
[editar] Ejemplo
#include <memory> #include <iostream> int main() { std::shared_ptr<int> p1(new int(42)); std::weak_ptr<int> wp(p1); p1.reset(); try { std::shared_ptr<int> p2(wp); } catch(const std::bad_weak_ptr& e) { std::cout << e.what() << '\n'; } }
Posible salida:
std::bad_weak_ptr
[editar] Informes de defectos
Los siguientes informes de defectos de cambio de comportamiento se aplicaron de manera retroactiva a los estándares de C++ publicados anteriormente.
ID | Aplicado a | Comportamiento según lo publicado | Comportamiento correcto |
---|---|---|---|
LWG 2376 | C++11 | Se requería que llamar a what en un bad_weak_ptr construido por defecto devolviera "bad_weak_ptr".
|
El valor de retorno está definido por la implementación. |
[editar] Véase también
(C++11) |
Puntero inteligente con semántica de posesión de objeto compartida. (plantilla de clase) |
(C++11) |
Referencia débil a un objeto gestionado por std::shared_ptr. (plantilla de clase) |