Files
Include/EgtPointerOwner.h
T
Dario Sassi 78b900c010 Include : modifiche per interfaccia DistPointCurve.
Piccola miglioria a PointerOwner.
2014-01-13 21:12:11 +00:00

61 lines
1.6 KiB
C++

//----------------------------------------------------------------------------
// EgalTech 2013-2013
//----------------------------------------------------------------------------
// File : EgtPointerOwner.h Data : 04.12.13 Versione : 1.4a3
// Contenuto : Dichiarazione classe template per puntatore con auto rilascio.
//
//
//
// Modifiche : 25.11.13 DS Creazione modulo.
//
//
//----------------------------------------------------------------------------
#pragma once
//----------------------------------------------------------------------------
template <class T>
class PtrOwner
{
public :
explicit PtrOwner( T* pT) : m_pT( pT) {}
~PtrOwner( void) { if ( m_pT != nullptr) delete m_pT ; m_pT = nullptr ; }
T& operator*() const { return *m_pT ; }
T* operator->() const { return m_pT ; }
private :
T* m_pT ;
template <class T> friend bool IsValid( PtrOwner<T>& RPT) ;
template <class T> friend T* Get( PtrOwner<T>& RPT) ;
template <class T> friend T* Release( PtrOwner<T>& RPT) ;
} ;
//----------------------------------------------------------------------------
template <class T>
bool
IsValid( PtrOwner<T>& RPT)
{
return ( RPT.m_pT != nullptr) ;
}
//----------------------------------------------------------------------------
template <class T>
T*
Get( PtrOwner<T>& RPT)
{
return RPT.m_pT ;
}
//----------------------------------------------------------------------------
template <class T>
T*
Release( PtrOwner<T>& RPT)
{
T* pT = RPT.m_pT ;
RPT.m_pT = nullptr ;
return pT ;
}