std:: bad_weak_ptr
|
Definiert im Header
<memory>
|
||
|
class
bad_weak_ptr
;
|
(seit C++11) | |
std::bad_weak_ptr
ist der Typ des Objekts, das als Exception von den Konstruktoren von
std::shared_ptr
geworfen wird, die einen
std::weak_ptr
als Argument nehmen, wenn der
std::weak_ptr
auf ein bereits gelöschtes Objekt verweist.
Vererbungsdiagramm
Inhaltsverzeichnis |
Memberfunktionen
|
(Konstruktor)
|
konstruiert ein neues
bad_weak_ptr
Objekt
(öffentliche Elementfunktion) |
|
operator=
|
ersetzt das
bad_weak_ptr
Objekt
(öffentliche Elementfunktion) |
|
what
|
gibt den erläuternden String zurück
(öffentliche Elementfunktion) |
std::bad_weak_ptr:: bad_weak_ptr
|
bad_weak_ptr
(
)
noexcept
;
|
(1) | (seit C++11) |
|
bad_weak_ptr
(
const
bad_weak_ptr
&
other
)
noexcept
;
|
(2) | (seit C++11) |
Konstruiert ein neues
bad_weak_ptr
-Objekt mit einer implementierungsdefinierten nullterminierten Byte-Zeichenkette, die über
what()
zugänglich ist.
std::bad_weak_ptr
haben, dann gilt
std::
strcmp
(
what
(
)
, other.
what
(
)
)
==
0
.
Parameter
| other | - | ein weiteres Ausnahmeobjekt zum Kopieren |
std::bad_weak_ptr:: operator=
|
bad_weak_ptr
&
operator
=
(
const
bad_weak_ptr
&
other
)
noexcept
;
|
(seit C++11) | |
Weist die Inhalte mit denen von
other
zu. Wenn
*
this
und
other
beide den dynamischen Typ
std::bad_weak_ptr
haben, dann gilt
std::
strcmp
(
what
(
)
, other.
what
(
)
)
==
0
nach der Zuweisung.
Parameter
| other | - | ein weiteres Ausnahmeobjekt, mit dem zugewiesen wird |
Rückgabewert
* this
std::bad_weak_ptr:: what
|
virtual
const
char
*
what
(
)
const
noexcept
;
|
(seit C++11) | |
Gibt den erklärenden String zurück.
Rückgabewert
Zeiger auf einen implementierungsdefinierten nullterminierten String mit erklärenden Informationen. Der String ist geeignet für Konvertierung und Anzeige als std::wstring . Der Zeiger ist garantiert mindestens so lange gültig, bis das Ausnahmeobjekt, von dem er erhalten wurde, zerstört wird, oder bis eine nicht-konstante Memberfunktion (z.B. Kopierzuweisungsoperator) auf dem Ausnahmeobjekt aufgerufen wird.
Anmerkungen
Implementierungen dürfen, sind aber nicht verpflichtet,
what()
zu überschreiben.
Geerbt von std:: exception
Elementfunktionen
|
[virtual]
|
zerstört das Ausnahmeobjekt
(virtuelle öffentliche Elementfunktion von
std::exception
)
|
|
[virtual]
|
gibt einen erläuternden String zurück
(virtuelle öffentliche Elementfunktion von
std::exception
)
|
Beispiel
#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'; } }
Mögliche Ausgabe:
std::bad_weak_ptr
Fehlerberichte
Die folgenden verhaltensändernden Fehlerberichte wurden rückwirkend auf zuvor veröffentlichte C++-Standards angewendet.
| DR | Angewendet auf | Verhalten wie veröffentlicht | Korrektes Verhalten |
|---|---|---|---|
| LWG 2376 | C++11 |
Aufruf von
what
auf einem standardkonstruierten
bad_weak_ptr
musste
"bad_weak_ptr"
zurückgeben
|
Der Rückgabewert ist implementierungsdefiniert |
Siehe auch
|
(C++11)
|
Intelligenter Zeiger mit Shared-Object-Ownership-Semantik
(Klassentemplate) |
|
(C++11)
|
Schwache Referenz auf ein von
std::shared_ptr
verwaltetes Objekt
(Klassentemplate) |