kennen:lib:static_pointer_cast
Inhaltsverzeichnis
static_pointer_cast()
#include
<memory>
template<class U, class T) std::shared_ptr<U> static_pointer_cast (std::shared_ptr<T> p)
Liefert referenzzählenden Zeiger eines anderen Typs, verwaltet aber den Speicher mit dem Argument gemeinsam.
Parameter
p | besitzteilender Zeiger |
Ergebnis
Rückgabewert: Mitbesitzender Zeiger oder leerer Zeiger, falls p
leer ist.
static_cast<U*>(p.get())
muss zulässig sein, führt aber zu undefiniertem Verhalten (zweimalige Freígabe).
Siehe auch
Beispiel
- static_pointer_cast.cpp
#include <memory> #include <iostream> struct Basis { virtual ~Basis(){} }; struct Abgeleitet : Basis { void hallo() { std::cout << "Hallo\n"; } }; int main() { std::shared_ptr<Basis> p = std::make_shared<Abgeleitet>(); auto q = std::static_pointer_cast<Abgeleitet>(p)) q->hallo(); }
kennen/lib/static_pointer_cast.txt · Zuletzt geändert: 2019-11-20 16:21 von 127.0.0.1