template class CCL::UnknownPtr
Smart pointer class for interfaces, managing queryInteface() and release().
#include <smartptr.h> template <class T> class UnknownPtr { public: // construction UnknownPtr (IUnknown* unk = nullptr); UnknownPtr (const UnknownPtr& other); template <class P> UnknownPtr (const UnknownPtr <P>& other); template <class P> UnknownPtr (const AutoPtr <P>& other); template <class P> UnknownPtr (const SharedPtr <P>& other); // methods bool isValid () const; UnknownPtr& release (); T* detach (); void** as_ppv (); T* as_plain () const; UnknownPtr& assign (IUnknown* unk); UnknownPtr& operator = (IUnknown* unk); UnknownPtr& operator = (const UnknownPtr& other); template <class P> UnknownPtr& operator = (const UnknownPtr <P>& other); template <class P> UnknownPtr& operator = (const AutoPtr <P>& other); template <class P> UnknownPtr& operator = (const SharedPtr <P>& other); T* operator -> () const; operator T* () const; operator T*& (); template <class T> UnknownPtr <T>& operator = (const UnknownPtr <T>& other); template <class P> UnknownPtr <T>& operator = (const UnknownPtr <P>& other); template <class P> UnknownPtr <T>& operator = (const AutoPtr <P>& other); template <class P> UnknownPtr <T>& operator = (const SharedPtr <P>& other); };