====== Přetypování dynamic_cast ====== Proměnnou typu ukazatel na základní třídu nemůžeme přiřadit do proměnné typu ukazatel na odvozenou třídu. Basic * b = new Basic; Component * v = b; Je zřejmé, že objekt typu //Basic// nemá proměnnou //z// a metodu //move//, a proto nelze přiřadit //v = b;// Pokud v proměnné typu //Basic*// byl uložen objekt typu //Component//, potom by bylo možné objekt uložit do proměné typu //Component*//. \\ Ovšem překladač nám stejně přiřazení nedovolí. Z hlediska překladače je přířazení ukazatele na //Basic// do ukazatele na //Component// potenciálně nebezpečné. Item * c = new Component; Basic * u = c; Component * v = u; /* překladač ohlásí chybu */ Konstrukce **dynamic_cast** umožňuje přetypování ukazatele na základní třídu na ukazatel na odvozenou třídu Basic * u; Component * v = dynamic_cast < Component * > (u); Pokud parametr v kulatých závorkách za běhu programu nebude skutečně typu uvedeného v < > závorkách, bude výsledkem **nullptr** Příklad použití dynamic_cast uvidíme v následujícím přikladu s Open Inventorem