本文主要是介绍生成单件类,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
// dff.cpp : 定义控制台应用程序的入口点。
//
#include "stdafx.h"
#include <iostream>
using namespace std;
//整数做为型别
template<int v>
struct Int2Type
{
enum {value = v};
};
//根据要产生单件类的类名和传入的数字共同确定单件类
template<class S, class T = Int2Type<0> >
class SingleClass
{
public:
static S* Init()
{
static S s;
return &s;
}
};
#define WX_M1 1
#define WX_M2 2
class WX
{
public:
int m_n;
};
class A : public SingleClass<WX, Int2Type<WX_M1> >
{
};
class B : public SingleClass<WX> //相当于 <WX, Int2Type<0> >
{
};
int _tmain(int argc, _TCHAR* argv[])
{
cout << "default A B" << endl;
cout << A::Init()->m_n << endl;
cout << B::Init()->m_n << endl;
cout << "A = 10 default B" << endl;
A::Init()->m_n = 10;
cout << A::Init()->m_n << endl;
cout << B::Init()->m_n << endl;
cout << "A = 10 B = 300" << endl;
B::Init()->m_n = 300;
cout << A::Init()->m_n << endl;
cout << B::Init()->m_n << endl;
return 0;
}
这篇关于生成单件类的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!