设计模式.单例子类能不能不friend父类,不private构造函数
template<class T>
class Base
{
public:
static T& instance(){static T instance;return instance;}
};
class Derived : public Base<Derived>
{
//begin
friend class Base;
private:
Derived(){}
//end
}
这里有没有办法能让父类再复杂一点,从而省掉子类的//begin 到//end之间的代码?请高手指教! 设计模式 单例 C++ friend 构造函数
[解决办法]
你的意图应该是这样吧:
template<class T>
class Base
{
friend T;
private:
Base(){}
public:
static T& instance(){static T instance;return instance;}
};
class Derived : public Base<Derived>
{
public:
Derived(){}
};
class A
{
public:
void SetA(int a){m_a = a;}
private:
A(){}
int m_a;
};
A *p = (A *)malloc(sizeof(A));
p->SetA(10);
template<class T>
class ResourceFactory_map
{
private:
ResourceFactory_map(){}
public:
static T& instance(){static T instance;return instance;}
};
class XXXMgr
{
friend ResourceFactory_map<XXXMgr>;
private:
XXXMgr(){}
XXXMgr(XXXMgr& other){}
};
XXXMgr &a = ResourceFactory_map<XXXMgr>::instance();