Auto (Smart) Pointer Class
CAutoPtr is a simple automatic or smart pointer class supporting the same semantic behaviours as SimpleLib's container classes. It therefore supports owned pointers, reference counted pointers and custom semantics classes.
template <class T, class TSem=SOwnedPtr>
class CAutoPtr;
To declare a pointer to an object that will be automatically deleted, use the CAutoPointer with no second argument:
CAutoPtr<CMyObject> spObject;
Any pointer assigned to spObject will now be automatically deleted when spObject goes out of scope.
Similarly to the SimpleLib's container classes, CAutoPtr also supports detaching a pointer without deleting it:
return spObject.Detach();
For reference counted objects such as COM interface pointers, CAutoPtr can be used to automatically release an object:
CAutoPtr<IUnknown, SRefCounted> spObject;
CAutoPtr supports a flexible set of operators that allow it to be treated as a regular pointer variable in most cases.