📄 atsobjptr.h
字号:
#ifndef __AMObjPtr
#define __AMObjPtr
/////////////////////////////////////////////
// 自动删除指针
/////////////////////////////////////////////
template <class T>
class CAtsObjPtr
{
public:
typedef T _PtrClass;
CAtsObjPtr()
{
p = NULL;
}
CAtsObjPtr(T* lp)
{
p = lp;
}
CAtsObjPtr(const CAtsObjPtr<T>& lp)
{
if ((p = lp.p) != NULL)
p->AddRef();
}
~CAtsObjPtr()
{
Release();
}
long Release()
{
if (p)
delete p;
return 0;
}
operator T*() const
{
return (T*)p;
}
T& operator*() const
{
ATLASSERT(p!=NULL);
return *p;
}
T* operator->() const
{
return p;
}
T* operator=(T* lp)
{
p = lp;
return lp;
}
T* operator=(const CAtsObjPtr<T>& lp)
{
if (lp != NULL)
lp.p->AddRef();
if (p)
p->Release();
p = lp;
return lp;
}
bool operator!() const
{
return (p == NULL);
}
bool operator<(T* pT) const
{
return p < pT;
}
bool operator==(T* pT) const
{
return p == pT;
}
bool IsEqualObject(T* pOther)
{
if ( p == pOther )
return true;
return false;
}
void Attach(T* p2)
{
if (p)
p->Release();
p = p2;
}
T* Detach()
{
T* pt = p;
p = NULL;
return pt;
}
T* p;
};
#endif // __AMObjPtr
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -