}
ePtr &operator=(T *c)
{
+ if (c)
+ c->AddRef();
if (ptr)
ptr->Release();
ptr=c;
- if (ptr)
- ptr->AddRef();
return *this;
}
ePtr &operator=(ePtr<T> &c)
{
+ if (c.ptr)
+ c.ptr->AddRef();
if (ptr)
ptr->Release();
ptr=c.ptr;
- if (ptr)
- ptr->AddRef();
return *this;
}
if (ptr)
ptr->Release();
}
+
+ T* grabRef() { if (!ptr) return 0; ptr->AddRef(); return ptr; }
T* &ptrref() { assert(!ptr); return ptr; }
ePtrHelper<T> operator->() { assert(ptr); return ePtrHelper<T>(ptr); }