Поделиться через


Класс ComPtr

Создает тип умный указатель — тип интеллектуального указателя, который представляет интерфейс, определяемый параметром шаблона. ComPtr автоматически поддерживает счетчик ссылок для указателя базового интерфейса и освобождает интерфейс, когда счетчик ссылок становится равен нулю.

template <
   typename T
>
class ComPtr;

template<
   class U
>
friend class ComPtr;

Параметры

  • T
    Интерфейс, который представляет ComPtr.

  • U
    Класс, которому текущий ComPtr является другом. (Шаблон, который использует этот параметр, является защищенным).

Примечания

ComPtr<> объявляет тип, который представляет основной указатель интерфейса. Используйте ComPtr<> для объявления переменной, а затем используйте оператор доступа к членам класса в виде стрелки (->) для доступа к функции-члену интерфейса.

Дополнительные сведения об интеллектуальных указателях см. в подразделе «Интеллектуальные указатели модели COM» раздела COM Coding Practices в библиотеке MSDN.

Члены

Общедоступные Typedefs

Имя

Описание

InterfaceType

Синоним для типа, указанного в параметре шаблона T.

Открытые конструкторы

Имя

Описание

Конструктор ComPtr::ComPtr

Инициализирует новый экземпляр класса ComPtr. Перегрузки предоставляют конструкторы по умолчанию, копирования, перемещения и преобразования.

Деструктор ComPtr::~ComPtr

Деинициализирует экземпляр ComPtr.

Открытые методы

Имя

Описание

Метод ComPtr::As

Возвращает объект ComPtr, представляющий интерфейс, определенный указанным параметром шаблона.

Метод ComPtr::AsIID

Возвращает объект ComPtr, представляющий интерфейс, определенный указанным идентификатором интерфейса.

Метод ComPtr::AsWeak

Извлекает слабую ссылку на текущий объект.

Метод ComPtr::Attach

Связывает этот ComPtr с типом интерфейса, указанным текущим параметром типа шаблона.

Метод ComPtr::CopyTo

Копирует текущий или указанный интерфейс, связанный с этим ComPtr, в заданный выходной указатель.

Метод ComPtr::Detach

Отделяет этот ComPtr от интерфейса, который он представляет.

Метод ComPtr::Get

Извлекает указатель на интерфейс, который связан с этим ComPtr.

Метод ComPtr::GetAddressOf

Извлекает адрес элемента данных ptr_, который содержит указатель на интерфейс, представленный данным ComPtr.

Метод ComPtr::ReleaseAndGetAddressOf

Освобождает интерфейс, связанный с данным ComPtr, а затем извлекает адрес данных-члена ptr_, который содержит указатель на интерфейс, который был освобожден.

Метод ComPtr::Swap

Меняет местами интерфейс, управляемый текущим ComPtr с интерфейсом, управляемым указанным ComPtr.

Защищенные методы

Имя

Описание

Метод ComPtr::InternalAddRef

Увеличивает счетчик ссылок интерфейса, связанного с данным классом ComPtr.

Метод ComPtr::InternalRelease

Выполняет операцию освобождения модели COM на интерфейсе, связанном с этим ComPtr.

Открытые операторы

Имя

Описание

Оператор ComPtr::operator Microsoft::WRL::Details::BoolType

Указывает, управляет ли ComPtr временем существования объекта интерфейса.

Оператор ComPtr::operator&

Извлекает адрес текущего ComPtr.

Оператор ComPtr::operator=

Присваивает значение текущему ComPtr.

Оператор ComPtr::operator->

Извлекает указатель на тип, указанный в текущем параметре шаблона.

Оператор ComPtr::operator==

Определяет равенство двух объектов ComPtr.

Оператор ComPtr::operator!=

Определяет неравенство двух объектов СomPtr.

Защищенные члены данных

Имя

Описание

Элемент данных ComPtr::ptr_

Содержит указатель на интерфейс, который связан и управляется текущим ComPtr.

Иерархия наследования

ComPtr

Требования

Заголовок: client.h

Пространство имен: Microsoft::WRL

См. также

Ссылки

Пространство имен Microsoft::WRL