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();