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


_com_ptr_t Экстракторы

Только для систем Майкрософт

Извлекают инкапсулированный указатель на COM-интерфейс.

Синтаксис

operator Interface*( ) const throw( );
operator Interface&( ) const;
Interface& operator*( ) const;
Interface* operator->( ) const;
Interface** operator&( ) throw( );
operator bool( ) const throw( );

Замечания

  • operator Interface* Возвращает инкапсулированный указатель интерфейса, который может иметь значение NULL.

  • operator Interface& Возвращает ссылку на инкапсулированный указатель интерфейса и выдает ошибку, если указатель имеет значение NULL.

  • operator* Позволяет интеллектуальному объекту указателя действовать так, как будто он был фактическим инкапсулированным интерфейсом при разыменовании.

  • operator-> Позволяет интеллектуальному объекту указателя действовать так, как будто он был фактическим инкапсулированным интерфейсом при разыменовании.

  • operator& Освобождает любой инкапсулированный указатель интерфейса, заменяя его значением NULL, и возвращает адрес инкапсулированного указателя. Этот оператор позволяет передавать смарт-указатель по адресу функции, которая имеет параметр out , через который он возвращает указатель интерфейса.

  • operator bool Позволяет использовать объект интеллектуального указателя в условном выражении. Этот оператор возвращает, true если указатель не имеет значения NULL.

    Примечание.

    Поскольку operator bool не объявлен как explicit, _com_ptr_t неявно boolпреобразуется в , который преобразуется в любой скалярный тип. Это может иметь непредвиденные последствия в коде. Включите предупреждение компилятора (уровень 4) C4800 , чтобы предотвратить непреднамеренное использование этого преобразования.

См. также

класс _com_ptr_t