首先是继承方式,为了进行单例的派生,需要将基类的构造函数以及拷贝赋值函数设置为protected成员
template <class T>
class Singleton
{
private:
static T* m_Instance;
protected:
Singleton(){};
Singleton(const Singleton &);
Singleton &operator=(const Singleton &);
public:
static T* Get_Instance();
static void Free_Instance();
}
继续记录之前 需要了解一下C++的继承机制
注意:派生类访问说明符对于派生类的成员以及友元能否访问其直接基类的成员没什么影响。对于基类的成员的访问权限只与基类中的访问说明符有关。派生访问说明符的目的是控制派生类用户(包括派生类的派生类在内)对于基类成员的访问权限 C++ primer 544页
以及友元类的机制
友元类可以通过自己的方法来访问把它当做朋友的那个类的所有成员。我们把类B设置成了类A的友元类,但是这并不会是类A成为类B的友元。说白了就是:甲愿意把甲的秘密告诉乙,但是乙不见得愿意把乙自己的秘密告诉甲。
#include "Father.h"
class A{
friend class B; //友元类直接这样定义就OK
public:
A(){
};
<