Namespaces
Variants

std:: bad_weak_ptr

From cppreference.net
Memory management library
( exposition only* )
Allocators
Uninitialized memory algorithms
Constrained uninitialized memory algorithms
Memory resources
Uninitialized storage (until C++20)
( until C++20* )
( until C++20* )
( until C++20* )

Garbage collector support (until C++23)
(C++11) (until C++23)
(C++11) (until C++23)
(C++11) (until C++23)
(C++11) (until C++23)
(C++11) (until C++23)
(C++11) (until C++23)
Défini dans l'en-tête <memory>
class bad_weak_ptr ;
(depuis C++11)

std::bad_weak_ptr est le type de l'objet levé comme exception par les constructeurs de std::shared_ptr qui prennent std::weak_ptr comme argument, lorsque le std::weak_ptr fait référence à un objet déjà supprimé.

cpp/error/exception std-bad weak ptr-inheritance.svg

Diagramme d'héritage

Table des matières

Fonctions membres

(constructeur)
construit un nouvel objet bad_weak_ptr
(fonction membre publique)
operator=
remplace l'objet bad_weak_ptr
(fonction membre publique)
what
retourne la chaîne explicative
(fonction membre publique)

std::bad_weak_ptr:: bad_weak_ptr

bad_weak_ptr ( ) noexcept ;
(1) (depuis C++11)
bad_weak_ptr ( const bad_weak_ptr & other ) noexcept ;
(2) (depuis C++11)

Construit un nouvel objet bad_weak_ptr avec une chaîne d'octets null-terminée définie par l'implémentation, accessible via what() .

1) Constructeur par défaut.
2) Constructeur de copie. Si * this et other ont tous deux le type dynamique std::bad_weak_ptr , alors std:: strcmp ( what ( ) , other. what ( ) ) == 0 .

Paramètres

other - un autre objet d'exception à copier

std::bad_weak_ptr:: operator=

bad_weak_ptr & operator = ( const bad_weak_ptr & other ) noexcept ;
(depuis C++11)

Assigne le contenu avec celui de other . Si * this et other ont tous deux le type dynamique std::bad_weak_ptr alors std:: strcmp ( what ( ) , other. what ( ) ) == 0 après l'assignation.

Paramètres

other - autre objet d'exception à assigner

Valeur de retour

* this

std::bad_weak_ptr:: what

virtual const char * what ( ) const noexcept ;
(depuis C++11)

Retourne la chaîne explicative.

Valeur de retour

Pointeur vers une chaîne terminée par un caractère nul, définie par l'implémentation, contenant des informations explicatives. La chaîne est adaptée à la conversion et à l'affichage en tant que std::wstring . Le pointeur est garanti valide au moins jusqu'à la destruction de l'objet exception duquel il est obtenu, ou jusqu'à l'appel d'une fonction membre non constante (par exemple, l'opérateur d'affectation par copie) sur l'objet exception.

Notes

Les implémentations sont autorisées mais non obligées de redéfinir what() .

Hérité de std:: exception

Fonctions membres

[virtual]
détruit l'objet exception
(fonction membre publique virtuelle de std::exception )
[virtual]
retourne une chaîne explicative
(fonction membre publique virtuelle de std::exception )

Exemple

#include <iostream>
#include <memory>
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';
    }
}

Sortie possible :

std::bad_weak_ptr

Rapports de défauts

Les rapports de défauts modifiant le comportement suivants ont été appliqués rétroactivement aux normes C++ précédemment publiées.

DR Appliqué à Comportement tel que publié Comportement correct
LWG 2376 C++11 l'appel à what sur un bad_weak_ptr construit par défaut devait retourner "bad_weak_ptr" la valeur de retour est définie par l'implémentation

Voir aussi

(C++11)
pointeur intelligent avec sémantique de propriété partagée d'objet
(modèle de classe)
(C++11)
référence faible vers un objet géré par std::shared_ptr
(modèle de classe)