template<class T>
class SAFETYPE
{
public:
SAFETYPE();
SAFETYPE(const SAFETYPE<T>& SAFETYPEsrc);
SAFETYPE(const T& t);
// member methods for atomic lock/unlock
void SingleLock()const;
void SingleUnlock()const;
// operators
operator T() const;
const SAFETYPE<T>&
operator=(const SAFETYPE<T>& SAFETYPEsrc);
const SAFETYPE<T>&
operator+=(const SAFETYPE<T>& SAFETYPEsrc);
const SAFETYPE<T>&
operator-=(const SAFETYPE<T>& SAFETYPEsrc);
/* the rest of the C operators ... */
protected:
HANDLE m_hMutex; // access protection
T m_t; // The data
};