27template <
typename T> 
class Handle : 
public HandleBase {
 
   30    Handle(
const Handle& rOther) : HandleBase(rOther) {}
 
   31    Handle(T* pObject) : HandleBase(
static_cast<LinkedObject*
>(pObject)) {}
 
   33    Handle& operator=(T* pObject) {
 
   37    bool IsAlive()
 const {
 
   38        ReferencedObject::LifeStatus status = GetLifeStatus();
 
   40        return status == ReferencedObject::NW4R_EF_LS_ACTIVE ||
 
   41               status == ReferencedObject::NW4R_EF_LS_WAIT;
 
   45        return static_cast<T*
>(HandleBase::GetPtr());
 
   48    ReferencedObject::LifeStatus GetLifeStatus()
 const {
 
   49        T* pObject = 
static_cast<T*
>(HandleBase::GetPtr());
 
   51        if (pObject == NULL) {
 
   52            return ReferencedObject::NW4R_EF_LS_CLOSED;
 
   55        return pObject->GetLifeStatus();