namespace cpp

C++ lernen, kennen, anwenden

Benutzer-Werkzeuge

Webseiten-Werkzeuge


kennen:lib:dynamic_pointer_cast

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();  
  }
  return 0;
}
kennen/lib/dynamic_pointer_cast.txt · Zuletzt geändert: 2012-04-11 17:23 (Externe Bearbeitung)