Note
Access to this page requires authorization. You can try signing in or changing directories.
Access to this page requires authorization. You can try changing directories.
The latest version of this topic can be found at _com_ptr_t::_com_ptr_t.
Microsoft Specific**
Constructs a _com_ptr_t object.
Syntax
// Default constructor.
// Constructs a NULL smart pointer.
_com_ptr_t() throw();
// Constructs a NULL smart pointer. The NULL argument must be zero.
_com_ptr_t(
int null
);
// Constructs a smart pointer as a copy of another instance of the
// same smart pointer. AddRef is called to increment the reference
// count for the encapsulated interface pointer.
_com_ptr_t(
const _com_ptr_t& cp
) throw();
// Move constructor (Visual Studio 2015 Update 3 and later)
_com_ptr_t(_com_ptr_t&& cp) throw();
// Constructs a smart pointer from a raw interface pointer of this
// smart pointer's type. If fAddRef is true, AddRef is called
// to increment the reference count for the encapsulated
// interface pointer. If fAddRef is false, this constructor
// takes ownership of the raw interface pointer without calling AddRef.
_com_ptr_t(
Interface* pInterface,
bool fAddRef
) throw();
// Construct pointer for a _variant_t object.
// Constructs a smart pointer from a _variant_t object. The
// encapsulated VARIANT must be of type VT_DISPATCH or VT_UNKNOWN, or
// it can be converted into one of these two types. If QueryInterface
// fails with an E_NOINTERFACE error, a NULL smart pointer is
// constructed.
_com_ptr_t(
const _variant_t& varSrc
);
// Constructs a smart pointer given the CLSID of a coclass. This
// function calls CoCreateInstance, by the member function
// CreateInstance, to create a new COM object and then queries for
// this smart pointer's interface type. If QueryInterface fails with
// an E_NOINTERFACE error, a NULL smart pointer is constructed.
explicit _com_ptr_t(
const CLSID& clsid,
IUnknown* pOuter = NULL,
DWORD dwClsContext = CLSCTX_ALL
);
// Calls CoCreateClass with provided CLSID retrieved from string.
explicit _com_ptr_t(
LPCWSTR str,
IUnknown* pOuter = NULL,
DWORD dwClsContext = CLSCTX_ALL
);
// Constructs a smart pointer given a multibyte character string that
// holds either a CLSID (starting with "{") or a ProgID. This function
// calls CoCreateInstance, by the member function CreateInstance, to
// create a new COM object and then queries for this smart pointer's
// interface type. If QueryInterface fails with an E_NOINTERFACE error,
// a NULL smart pointer is constructed.
explicit _com_ptr_t(
LPCSTR str,
IUnknown* pOuter = NULL,
DWORD dwClsContext = CLSCTX_ALL
);
// Saves the interface.
template<>
_com_ptr_t(
Interface* pInterface
) throw();
// Make sure correct ctor is called
template<>
_com_ptr_t(
LPSTR str
);
// Make sure correct ctor is called
template<>
_com_ptr_t(
LPWSTR str
);
// Constructs a smart pointer from a different smart pointer type or
// from a different raw interface pointer. QueryInterface is called to
// find an interface pointer of this smart pointer's type. If
// QueryInterface fails with an E_NOINTERFACE error, a NULL smart
// pointer is constructed.
template<typename _OtherIID>
_com_ptr_t(
const _com_ptr_t<_OtherIID>& p
);
// Constructs a smart-pointer from any IUnknown-based interface pointer.
template<typename _InterfaceType>
_com_ptr_t(
_InterfaceType* p
);
// Disable conversion using _com_ptr_t* specialization of
// template<typename _InterfaceType> _com_ptr_t(_InterfaceType* p)
template<>
explicit _com_ptr_t(
_com_ptr_t* p
);
Parameters
pInterface
A raw interface pointer.
fAddRef
If true, AddRef is called to increment the reference count of the encapsulated interface pointer.
cp
A _com_ptr_t object.
p
A raw interface pointer, its type being different from the smart pointer type of this _com_ptr_t object.
varSrc
A _variant_t object.
clsid
The CLSID of a coclass.
dwClsContext
Context for running executable code.
lpcStr
A multibyte string that holds either a CLSID (starting with "{") or a ProgID.
pOuter
The outer unknown for aggregation.