static_pointer_cast

Материал из CAMaaS preliminary wiki
Перейти к навигации Перейти к поиску
template <class ITo, class IFrom>
shared_interface_ptr<ITo> static_pointer_cast(const shared_interface_ptr<IFrom>& frm) noexcept;

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

Параметры шаблона
IToТип интерфейса, в который осуществляется преобразование.
IFromТип интерфейса, из которого осуществляется преобразование.
Параметры
frmПреобразуемый объект.
Возвращаемое значение:
Результат преобразования.
См. также
std::static_pointer_castАналогичная функция для std::shared_ptr.
dynamic_pointer_castПреобразует смарт-указатель shared_interface_ptr на интерфейс с разделением владения и с преобразованием ассоциированного интерфейсного указателя через dynamic_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);