- 论坛徽章:
- 0
|
- class SingletonObj
- {
- public:
- static SingletonObj* getInstance();
- static void release();
- private:
- //把它定义成不可靠贝 不可赋值 只能从单一点获取
- SingletonObj()
- {}
- SingletonObj(const SingletonObj& another)
- {
- }
-
- SingletonObj& operator=(const SingletonObj& another)
- {
- }
- static SingletonObj* obj_;
- };
- SingletonObj* SingletonObj::obj_ = NULL;
- SingletonObj* SingletonObj::getInstance()
- {
- if (obj_ == NULL)
- obj = new SingletonObj;
- return obj; //确保它是唯一的。
- }
- void SingletonObj::release()
- {
- if (obj_ != NULL)
- {
- delete obj_;
- obj_ = NULL;
- }
- }
复制代码
我对指针的保存,用了boost库的shared_ptr<T>
记得IBM的编码规范里面有一条,对于类方法,只通过类名来调用。
所以你要获得指针时。
只需要通过SingletonObj::getInstance()获得就可以了。没有必要再用什么share_ptr<T>,这个模板在我的印象里是实现了所有权转移功能的,记不大清楚了。
要释放时调用SingletonObj::release()就可以了。
不知道你是出于什么目的来给一个单件实例的指针加这样一个包装。 |
|