ComPtrRef Class

Supports the WRL infrastructure and is not intended to be used directly from your code.

Syntax

template <typename T>
class ComPtrRef : public ComPtrRefBase<T>;

Parameters

T
A ComPtr<T> type or a type derived from it, not merely the interface represented by the ComPtr.

Remarks

Represents a reference to an object of type ComPtr<T>.

Members

Public Constructors

Name Description
ComPtrRef::ComPtrRef Initializes a new instance of the ComPtrRef class from the specified pointer to another ComPtrRef object.

Public Methods

Name Description
ComPtrRef::GetAddressOf Retrieves the address of a pointer to the interface represented by the current ComPtrRef object.
ComPtrRef::ReleaseAndGetAddressOf Deletes the current ComPtrRef object and returns a pointer-to-a-pointer to the interface that was represented by the ComPtrRef object.

Public Operators

Name Description
ComPtrRef::operator InterfaceType** Deletes the current ComPtrRef object and returns a pointer-to-a-pointer to the interface that was represented by the ComPtrRef object.
ComPtrRef::operator T* Returns the value of the ptr_ data member of the current ComPtrRef object.
ComPtrRef::operator void** Deletes the current ComPtrRef object, casts the pointer to the interface that was represented by the ComPtrRef object as a pointer-to-pointer-to void, and then returns the cast pointer.
ComPtrRef::operator* Retrieves the pointer to the interface represented by the current ComPtrRef object.
ComPtrRef::operator== Indicates whether two ComPtrRef objects are equal.
ComPtrRef::operator!= Indicates whether two ComPtrRef objects are not equal.

Inheritance Hierarchy

ComPtrRefBase

ComPtrRef

Requirements

Header: client.h

Namespace: Microsoft::WRL::Details

ComPtrRef::ComPtrRef

Supports the WRL infrastructure and is not intended to be used directly from your code.

ComPtrRef(
   _In_opt_ T* ptr
);

Parameters

ptr
The underlying value of another ComPtrRef object.

Remarks

Initializes a new instance of the ComPtrRef class from the specified pointer to another ComPtrRef object.

ComPtrRef::GetAddressOf

Supports the WRL infrastructure and is not intended to be used directly from your code.

InterfaceType* const * GetAddressOf() const;

Return Value

Address of a pointer to the interface represented by the current ComPtrRef object.

Remarks

Retrieves the address of a pointer to the interface represented by the current ComPtrRef object.

ComPtrRef::operator==

Supports the WRL infrastructure and is not intended to be used directly from your code.

bool operator==(
   const Details::ComPtrRef<ComPtr<T>>& a,
   const Details::ComPtrRef<ComPtr<U>>& b
);

bool operator==(
   const Details::ComPtrRef<ComPtr<T>>& a,
   decltype(__nullptr)
);

bool operator==(
   decltype(__nullptr),
   const Details::ComPtrRef<ComPtr<T>>& a
);

bool operator==(
   const Details::ComPtrRef<ComPtr<T>>& a,
   void* b
);

bool operator==(
   void* b,
   const Details::ComPtrRef<ComPtr<T>>& a
);

Parameters

a
A reference to a ComPtrRef object.

b
A reference to another ComPtrRef object, or a pointer to an anonymous type (void*).

Return Value

The first operator yields true if object a is equal to object b; otherwise, false.

The second and third operators yield true if object a is equal to nullptr; otherwise, false.

The fourth and fifth operators yield true if object a is equal to object b; otherwise, false.

Remarks

Indicates whether two ComPtrRef objects are equal.

ComPtrRef::operator!=

Supports the WRL infrastructure and is not intended to be used directly from your code.

bool operator!=(
   const Details::ComPtrRef<ComPtr<T>>& a,
   const Details::ComPtrRef<ComPtr<U>>& b
);

bool operator!=(
   const Details::ComPtrRef<ComPtr<T>>& a,
   decltype(__nullptr)
);

bool operator!=(
   decltype(__nullptr),
   const Details::ComPtrRef<ComPtr<T>>& a
);

bool operator!=(
   const Details::ComPtrRef<ComPtr<T>>& a,
   void* b
);

bool operator!=(
   void* b,
   const Details::ComPtrRef<ComPtr<T>>& a
);

Parameters

a
A reference to a ComPtrRef object.

b
A reference to another ComPtrRef object, or a pointer to an anonymous object (void*).

Return Value

The first operator yields true if object a is not equal to object b; otherwise, false.

The second and third operators yield true if object a is not equal to nullptr; otherwise, false.

The fourth and fifth operators yield true if object a is not equal to object b; otherwise, false.

Remarks

Indicates whether two ComPtrRef objects are not equal.

ComPtrRef::operator InterfaceType**

Supports the WRL infrastructure and is not intended to be used directly from your code.

operator InterfaceType**();

Remarks

Deletes the current ComPtrRef object and returns a pointer-to-a-pointer to the interface that was represented by the ComPtrRef object.

ComPtrRef::operator*

Supports the WRL infrastructure and is not intended to be used directly from your code.

InterfaceType* operator *();

Return Value

Pointer to the interface represented by the current ComPtrRef object.

Remarks

Retrieves the pointer to the interface represented by the current ComPtrRef object.

ComPtrRef::operator T*

Supports the WRL infrastructure and is not intended to be used directly from your code.

operator T*();

Remarks

Returns the value of the ptr_ data member of the current ComPtrRef object.

ComPtrRef::operator void**

Supports the WRL infrastructure and is not intended to be used directly from your code.

operator void**() const;

Remarks

Deletes the current ComPtrRef object, casts the pointer to the interface that was represented by the ComPtrRef object as a pointer-to-pointer-to void, and then returns the cast pointer.

ComPtrRef::ReleaseAndGetAddressOf

Supports the WRL infrastructure and is not intended to be used directly from your code.

InterfaceType** ReleaseAndGetAddressOf();

Return Value

Pointer to the interface that was represented by the deleted ComPtrRef object.

Remarks

Deletes the current ComPtrRef object and returns a pointer-to-a-pointer to the interface that was represented by the ComPtrRef object.