Cocos2d-x学习笔记 (2) C++如何创建单例

来源:互联网 发布:广联达规范查询软件 编辑:程序博客网 时间:2024/05/21 17:13

一引言

cocos2d-x的导演类等有shared关键词方法获得的为单例类,就是整个程序就那么一个类的实例,对我这个菜鸟来说,真不会用c++写单例类。

今天参考了下百度

二 代码

#include <iostream>
using namespace std;

class Csingle
{
public:
 static Csingle* getSingle();
private:
 Csingle(){};
 static Csingle *m_pSingle;
};
Csingle* Csingle::m_pSingle = NULL;
Csingle* Csingle::getSingle()
 {
  if (m_pSingle==NULL)
   m_pSingle=new Csingle();
  return m_pSingle;
 }

void main()
{
 Csingle *p=Csingle::getSingle();
 getchar();
 getchar();
}

红字部分是静态成员初始化,很重要。我就是少了那一个语句老是报错,摸不到头绪,现在恍然大悟!

报错如下:

error LNK2001: 无法解析的外部符号 "private: static class Csingle * Csingle::m_pSingle" (?m_pSingle@Csingle@@0PAV1@A)

三 分析

原理很简单,

1.声明静态的类成员变量,存放那个唯一的实例。

2.用类静态函数创建,然后返回,当然先判断存在否,如果存在就还返回已经存在的那个。

3.最重要的是把构造函数给private了,这样就new不出新实例来了,只能是通过提供的接口函数来获得类的实例对象

原创粉丝点击