Add reference count capability to your class with a template class

王朝vc·作者佚名  2006-01-08
窄屏简体版  字體: |||超大  

Because my system can't install Chinese IME, so... In fact, everyone read this article should know my english is very pool.

// This template class is used to add "ref count" feature for any class

template <class T>

class CRefObject : public T

{

public:

DWORD AddRef(void)

{

return ::InterlockedIncrement((LPLONG)&m_dwRef);

}

DWORD Release(void)

{

if (0 == m_dwRef ||

0 == ::InterlockedDecrement((LPLONG)&m_dwRef))

{

delete this;

return 0;

}

return m_dwRef;

}

// Create an instance buf ref == 0

static CRefObject<T> * CreateInstance(void)

{

CRefObject<T> * p = NULL;

p = new CRefObject<T>();

return p;

}

protected:

// Note: All T MUST have a default constructor

CRefObject(void) : m_dwRef(0)

{

}

// I think it is unnecessary to define a "virtual" distrcutor

~CRefObject() {};

DWORD m_dwRef;

};

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
 
 
© 2005- 王朝網路 版權所有 導航