snake5 icon

SGRX - handle for refcounted objects

snake5 | PRO | 12/24/15 07:19:15 PM UTC | 0 ⭐ | 771 👁️ | Never ⏰ | []
C++ |

540 B

|

None

|

0 👍

/

0 👎

template< class T >
struct Handle
{
    typedef T subtype;
    T* item;
    
    Handle() : item( NULL ){}
    Handle( T* v ) : item( v ){ if( item ) item->Acquire(); }
    Handle( const Handle& h ) : item( h.item ){ if( item ) item->Acquire(); }
    ~Handle(){ if( item ){ item->Release(); item = NULL; } }
    Handle& operator = ( const Handle& h ){ if( item ) item->Release(); item = h.item; if( item ) item->Acquire(); return *this; }
    T* operator -> () const { return item; }
    T& operator * () const { return *item; }
    operator T* () const { return item; }
};

Comments