单件在实际开发过程中用的很多。就类似C中的全局变量一样。下面介绍两种单件的写法:
第一种:使用模板
template <class T>
class QcSingleton
{
friend typename T;
private:
QcSingleton(){}
public:
~QcSingleton(){}
static T* GetInstance()
{
static T Instance;
return &Instance;
}
};
#define INSTANCE(CLASS) QcSingleton<CLASS>::GetInstance()
#define SINGLETON(CLASS) friend class QcSingleton<CLASS>
使用:
#include "QcSingleton.h"
typedef std::list<std::string> FilePathArray;
class QcFileManager : public QcSingleton<QcFileManager>
{
SINGLETON(QcFileManager);
public:
};
第二种:直接定义单件宏
#define DEFINE_SINGLETON(CLASS)/
private:/
CLASS(){}/
~CLASS(){}/
public:/
static CLASS* GetInstance()/
{/
static CLASS Instance;/
return &Instance;/
}
使用:
class QcFileManager
{
DEFINE_SINGLETON(QcFileManager)
};