dynamic_pointer_cast

Материал из CAMaaS preliminary wiki
Версия от 22:44, 2 января 2018; Андрей Чусов (обсуждение | вклад) (Новая страница: «{{DISPLAYTITLE:dynamic_pointer_cast}} {{function_begin |template <class ITo, class IFrom> shared_interface_ptr<ITo> dynamic_pointer_cast(const shared_interface_pt…»)
(разн.) ← Предыдущая | Текущая версия (разн.) | Следующая → (разн.)
Перейти к навигации Перейти к поиску
template <class ITo, class IFrom>
shared_interface_ptr<ITo> dynamic_pointer_cast(const shared_interface_ptr<IFrom>& frm) noexcept;

Преобразует смарт-указатель shared_interface_ptr на интерфейс с разделением владения и с преобразованием ассоциированного интерфейсного указателя через dynamic_cast.

Параметры шаблона
IToТип интерфейса, в который осуществляется преобразование.
IFromТип интерфейса, из которого осуществляется преобразование.
Параметры
frmПреобразуемый объект.
Возвращаемое значение:
Результат преобразования.
См. также
std::dynamic_pointer_castАналогичная функция для std::shared_ptr.
static_pointer_castПреобразует смарт-указатель shared_interface_ptr на интерфейс с разделением владения и с преобразованием ассоциированного интерфейсного указателя через static_cast.
const_pointer_castПреобразует смарт-указатель shared_interface_ptr на интерфейс с разделением владения и с преобразованием ассоциированного интерфейсного указателя через const_cast.
reinterpret_pointer_castПреобразует смарт-указатель shared_interface_ptr на интерфейс с разделением владения и с преобразованием ассоциированного интерфейсного указателя через reinterpret_cast.

Операция атомарна.

Пример
auto pI1 = shared_interface_ptr<INode>(InvokeInterfaceGetter(&DemarshalNode, pDomainName, cchDomainName, std::uint32_t(nFormat), is.get_interface(), control.get_interface()));
auto pI2 = static_pointer_cast<ITCPNode>(pI1);
auto pI3 = dynamic_pointer_cast<ITCPNodeCustomRequestHandler>(pI2);