kennen:lib:dynamic_pointer_cast
Inhaltsverzeichnis
dynamic_pointer_cast()
#include
<memory>
template<class U, class T) std::shared_ptr<U> dynamic_pointer_cast (std::shared_ptr<T> p)
Liefert referenzzählenden Zeiger auf dynamisches Objekt einer abgeleiteten Klasse (Downcast) oder einen leeren Pointer.
Parameter
p | besitzteilender Zeiger |
Ergebnis
Rückgabewert: Mitbesitzender Zeiger, wenn die Klasse U
von T
abgeleitet und p
nicht leer ist, sonst leerer Zeiger.
dynamic_pointer_cast<U*>(p.get())
muss zulässig sein, führt aber zu undefiniertem Verhalten (zweimalige Freígabe).
Siehe auch
Beispiel
- dynamic_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>(); if (auto q = std::dynamic_pointer_cast<Abgeleitet>(p)) { q->hallo(); } }
kennen/lib/dynamic_pointer_cast.txt · Zuletzt geändert: 2019-11-20 15:08 von 127.0.0.1