Класс CComPtrBase
Этот класс предоставляет основу для интеллектуальных классов указателей с помощью процедур памяти на основе COM.
Синтаксис
template <class T>
class CComPtrBase
Параметры
T
Тип объекта, на который ссылается смарт-указатель.
Участники
Открытые конструкторы
Имя | Описание |
---|---|
CComPtrBase::~CComPtrBase |
Деструктор |
Открытые методы
Имя | Описание |
---|---|
CComPtrBase::Advise |
Вызовите этот метод, чтобы создать соединение между CComPtrBase точкой подключения и приемником клиента. |
CComPtrBase::Attach |
Вызовите этот метод для владения существующим указателем. |
CComPtrBase::CoCreateInstance |
Вызовите этот метод для создания объекта класса, связанного с указанным идентификатором класса или идентификатором программы. |
CComPtrBase::CopyTo |
Вызовите этот метод, чтобы скопировать указатель на CComPtrBase другую переменную указателя. |
CComPtrBase::Detach |
Вызовите этот метод, чтобы освободить владение указателем. |
CComPtrBase::IsEqualObject |
Вызовите этот метод, чтобы проверить, указывает ли указанный IUnknown объект на тот же объект, связанный с CComPtrBase объектом. |
CComPtrBase::QueryInterface |
Вызовите этот метод, чтобы вернуть указатель на указанный интерфейс. |
CComPtrBase::Release |
Вызовите этот метод, чтобы освободить интерфейс. |
CComPtrBase::SetSite |
Вызовите этот метод, чтобы задать сайт CComPtrBase объекта IUnknown родительскому объекту. |
Общедоступные операторы
Имя | Описание |
---|---|
CComPtrBase::operator T* |
Оператор приведения. |
CComPtrBase::operator ! |
Оператор NOT. |
CComPtrBase::operator & |
Оператор адреса & . |
CComPtrBase::operator * |
Оператор указателя на * . |
CComPtrBase::operator < |
Оператор меньше, чем оператор. |
CComPtrBase::operator == |
Оператор равенства. |
CComPtrBase::operator -> |
Оператор указателя на члены. |
Общедоступные члены данных
Имя | Описание |
---|---|
CComPtrBase::p |
Переменная элемента данных указателя. |
Замечания
Этот класс предоставляет основу для других смарт-указателей, использующих процедуры управления памятью COM, такие как CComQIPtr
и CComPtr
. Производные классы добавляют собственные конструкторы и операторы, но полагаются на методы, предоставляемые CComPtrBase
.
Требования
Заголовок: atlcomcli.h
CComPtrBase::Advise
Вызовите этот метод, чтобы создать соединение между CComPtrBase
точкой подключения и приемником клиента.
HRESULT Advise(
IUnknown* pUnk,
const IID& iid,
LPDWORD pdw) throw();
Параметры
pUnk
Указатель на клиент IUnknown
.
iid
GUID точки подключения. Как правило, этот GUID совпадает с исходящим интерфейсом, управляемым точкой подключения.
pdw
Указатель на файл cookie, который однозначно идентифицирует соединение.
Возвращаемое значение
Возвращает успешность S_OK
или ошибку HRESULT
при сбое.
Замечания
Дополнительные сведения см. в разделе AtlAdvise
.
CComPtrBase::Attach
Вызовите этот метод для владения существующим указателем.
void Attach(T* p2) throw();
Параметры
p2
Объект CComPtrBase
будет иметь владение этим указателем.
Замечания
Attach
вызывает CComPtrBase::Release
существующую переменную-член, а затем назначается CComPtrBase::p
p2
.CComPtrBase::p
CComPtrBase
Когда объект берет на себя владение указателем, он автоматически вызывает Release
указатель, который удаляет указатель и все выделенные данные, если счетчик ссылок объекта переходит к 0.
CComPtrBase::~CComPtrBase
Деструктор
~CComPtrBase() throw();
Замечания
Освобождает интерфейс, на который указывает CComPtrBase
.
CComPtrBase::CoCreateInstance
Вызовите этот метод для создания объекта класса, связанного с указанным идентификатором класса или идентификатором программы.
HRESULT CoCreateInstance(
LPCOLESTR szProgID,
LPUNKNOWN pUnkOuter = NULL,
DWORD dwClsContext = CLSCTX_ALL) throw();
HRESULT CoCreateInstance(
REFCLSID rclsid,
LPUNKNOWN pUnkOuter = NULL,
DWORD dwClsContext = CLSCTX_ALL) throw();
Параметры
szProgID
Указатель на ProgID, используемый для восстановления CLSID.
pUnkOuter
Если значение NULL, указывает, что объект не создается в составе агрегата. Если значение NULL не равно NULL, это указатель на интерфейс агрегатного IUnknown
объекта (контролируемый IUnknown
объект).
dwClsContext
Контекст, в котором будет выполняться код, который управляет только что созданным объектом.
rclsid
CLSID, связанный с данными и кодом, которые будут использоваться для создания объекта.
Возвращаемое значение
Возвращает значение S_OK
успешного выполнения или CLASS_E_NOAGGREGATION
REGDB_E_CLASSNOTREG
CO_E_CLASSSTRING
, или E_NOINTERFACE
при сбое. См CoCreateClassInstance
. и CLSIDFromProgID
описание этих ошибок.
Замечания
Если вызывается первая форма метода, CLSIDFromProgID
используется для восстановления CLSID. Обе формы вызываются CoCreateClassInstance
.
В сборках отладки ошибка утверждения будет возникать, если CComPtrBase::p
значение NULL не равно NULL.
CComPtrBase::CopyTo
Вызовите этот метод, чтобы скопировать указатель на CComPtrBase
другую переменную указателя.
HRESULT CopyTo(T** ppT) throw();
Параметры
ppT
Адрес переменной для получения указателя CComPtrBase
.
Возвращаемое значение
Возвращает успешность S_OK
при E_POINTER
сбое.
Замечания
Копирует указатель ppT
в CComPtrBase
. Число ссылок в переменной-члене CComPtrBase::p
увеличивается.
Ошибка HRESULT
будет возвращена, если ppT
равно NULL. В отладочных сборках ошибка утверждения будет возникать, если ppT
равно NULL.
CComPtrBase::Detach
Вызовите этот метод, чтобы освободить владение указателем.
T* Detach() throw();
Возвращаемое значение
Возвращает копию указателя.
Замечания
Освобождает владение указателем, задает CComPtrBase::p
переменную члена данных значение NULL и возвращает копию указателя.
CComPtrBase::IsEqualObject
Вызовите этот метод, чтобы проверить, указывает ли указанный IUnknown
объект на тот же объект, связанный с CComPtrBase
объектом.
bool IsEqualObject(IUnknown* pOther) throw();
Параметры
pOther
Объект IUnknown *
для сравнения.
Возвращаемое значение
Возвращает значение true, если объекты идентичны, значение false в противном случае.
CComPtrBase::operator !
Оператор NOT.
bool operator!() const throw();
Возвращаемое значение
Возвращает значение true, если CComHeapPtr
указатель равен NULL, в противном случае — значение false.
CComPtrBase::operator &
Оператор адреса &
.
T** operator&() throw();
Возвращаемое значение
Возвращает адрес объекта, на который указывает CComPtrBase
объект.
CComPtrBase::operator *
Оператор указателя на *
.
T& operator*() const throw();
Возвращаемое значение
Возвращает значение CComPtrBase::p
; то есть указатель на объект, на который CComPtrBase
ссылается объект.
Если отладочные сборки, ошибка утверждения будет возникать, если CComPtrBase::p
значение NULL не равно NULL.
CComPtrBase::operator ==
Оператор равенства.
bool operator== (T* pT) const throw();
Параметры
pT
Указатель на объект .
Возвращаемое значение
Возвращает значение true, если CComPtrBase
и pT
указывает на тот же объект, значение false в противном случае.
CComPtrBase::operator ->
Оператор указателя на член.
_NoAddRefReleaseOnCComPtr<T>* operator->() const throw();
Возвращаемое значение
Возвращает значение переменной CComPtrBase::p
члена данных.
Замечания
Этот оператор используется для вызова метода в классе, на который указывает CComPtrBase
объект. При отладке сборки произойдет сбой утверждения, если CComPtrBase
член данных указывает на NULL.
CComPtrBase::operator <
Оператор меньше, чем оператор.
bool operator<(T* pT) const throw();
Параметры
pT
Указатель на объект .
Возвращаемое значение
Возвращает значение true, если указатель, управляемый текущим объектом, меньше указателя, с которым сравнивается указатель.
CComPtrBase::operator T*
Оператор приведения.
operator T*() const throw();
Замечания
Возвращает указатель на тип данных объекта, определенный в шаблоне класса.
CComPtrBase::p
Переменная элемента данных указателя.
T* p;
Замечания
Эта переменная-член содержит сведения указателя.
CComPtrBase::QueryInterface
Вызовите этот метод, чтобы вернуть указатель на указанный интерфейс.
template <class Q> HRESULT QueryInterface(Q
** pp) const throw();
Параметры
Q
Тип объекта, указатель интерфейса которого является обязательным.
pp
Адрес выходной переменной, получающей запрошенный указатель интерфейса.
Возвращаемое значение
Возвращает значение S_OK
успешного выполнения или E_NOINTERFACE
сбоя.
Замечания
Этот метод вызывает IUnknown::QueryInterface
.
В сборках отладки ошибка утверждения будет возникать, если pp
значение NULL не равно NULL.
CComPtrBase::Release
Вызовите этот метод, чтобы освободить интерфейс.
void Release() throw();
Замечания
Интерфейс освобождается и CComPtrBase::p
имеет значение NULL.
CComPtrBase::SetSite
Вызовите этот метод, чтобы задать сайт CComPtrBase
объекта IUnknown
родительскому объекту.
HRESULT SetSite(IUnknown* punkParent) throw();
Параметры
punkParent
Указатель на IUnknown
интерфейс родительского элемента.
Возвращаемое значение
Возвращает успешность S_OK
или ошибку HRESULT
при сбое.
Замечания
Этот метод вызывает AtlSetChildSite
.