如何创建单实例类
1、在头文件中定义如下两个类
class noncopyable
{
protected:
noncopyable() {}
~noncopyable() {}
private:
noncopyable( const noncopyable&);
const noncopyable& operator = (const noncopyable &);
};
template<class T>
class singleton : public noncopyable
{
protected:
singleton() {}
public:
static T& get_instance()
{
static T instance;
return instance;
}
};
2、在需要创建单实例的代码中包含上述头文件,在代码下面宏定义:
#define CCPP_SINGLETON(classname) friend class singleton<classname>
按下面的范例添加相关代码:
class menuloop : public singleton<menuloop>
{
private:
menuloop();
~menuloop();
CCPP_SINGLETON(menuloop);
public:
// your code
};