C++模板类管理单例释放

类成员含有函数指针,初始化时候把对应单例句柄赋值;

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
#ifndef _AUTO_RELEASE_H_
#define _AUTO_RELEASE_H_

template<typename Type>
class CAutoRelease {
public:
typedef void (Type::*PtrFun)(void);
public:
CAutoRelease(Type* pClass,PtrFun ptrFun)
:m_pClass(pClass)
,m_ptrFun(ptrFun) {
}

~CAutoRelease() {
(m_pClass->*m_ptrFun)();
}

private:
Type* m_pClass;
PtrFun m_ptrFun;

CAutoRelease();
CAutoRelease(const CAutoRelease&);
CAutoRelease& operator= (const CAutoRelease&);
};

#endif