Vaca::SmartPtr< T > Class Template Reference

#include <SmartPtr.h>

Inheritance diagram for Vaca::SmartPtr< T >:

Vaca::Brush Vaca::Cursor Vaca::Font Vaca::Icon Vaca::Image Vaca::ImageList Vaca::Pen Vaca::Region

List of all members.


Detailed Description

template<class T>
class Vaca::SmartPtr< T >

A pointer which maintains reference counting and automatically deletes the pointed object when it is no longer referenced.

What is a smart pointer? It is a class that wraps a pointer to a dynamically allocated object. Various smart pointers can share the same object counting references for that object. When the last smart pointer is destroyed, the object is automatically deleted.

It's used internally by Vaca to wrap classes that can't be derivable and handle graphics resources (like Brush, Pen, Image, Icon, etc.).

Template Parameters:
T Must be of Referenceable type, because Referenceable has the reference counter.

Public Member Functions

 SmartPtr ()
 SmartPtr (T *ptr)
 SmartPtr (const SmartPtr &other)
virtual ~SmartPtr ()
SmartPtroperator= (const SmartPtr &other)
T * get () const
T & operator* () const
T * operator-> () const

Private Member Functions

void ref ()
void unref ()

Private Attributes

T * m_ptr

Constructor & Destructor Documentation

template<class T>
Vaca::SmartPtr< T >::SmartPtr (  )  [inline]

template<class T>
Vaca::SmartPtr< T >::SmartPtr ( T *  ptr  )  [inline, explicit]

template<class T>
Vaca::SmartPtr< T >::SmartPtr ( const SmartPtr< T > &  other  )  [inline]

template<class T>
virtual Vaca::SmartPtr< T >::~SmartPtr (  )  [inline, virtual]


Member Function Documentation

template<class T>
SmartPtr& Vaca::SmartPtr< T >::operator= ( const SmartPtr< T > &  other  )  [inline]

template<class T>
T* Vaca::SmartPtr< T >::get (  )  const [inline]

template<class T>
T& Vaca::SmartPtr< T >::operator* (  )  const [inline]

template<class T>
T* Vaca::SmartPtr< T >::operator-> (  )  const [inline]

template<class T>
void Vaca::SmartPtr< T >::ref (  )  [inline, private]

template<class T>
void Vaca::SmartPtr< T >::unref (  )  [inline, private]


Member Data Documentation

template<class T>
T* Vaca::SmartPtr< T >::m_ptr [private]