如何将Loki::SingletonHolder申明为friend

MadLee 2003-12-23 10:50:44
我有一个类准备做成singleon,因此将它的构造函数申明为private
class A
{
private:
  A() { }
};
然后用Loki::SingletonHolder管理:
Loki::SingletonHolder<A> gAHolder;
当然编译报错:
C2248: 'Loki::SingletonHolder<T>::__ctor' : cannot access private member declared in class 'Loki::SingletonHolder<T>';

于是我将Loki::SingletonHolder申明为friend
class A
{
private:
  A() { }
friend class Loki::SingletonHolder<A>;
};
但还是不行,
编译器为vs.net 2003

请问应该如何改,还是我的理解有问题?谢谢

...全文
7 1 收藏 2
写回复
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
MadLee 2003-12-23
哦,谢谢。
回复
yisan 2003-12-23
class HumanJoints
{
friend struct Loki::CreateUsingNew<HumanJoints>;
public:
...
};

这是我自己曾经写的一段代码。
因为不是直接以SingletonHolder而是以CreateUsingNew(或其他两个policies之一)来创建对象的。你分析一下源代码就知道了。
回复
发动态
发帖子
工具平台和程序库
创建于2007-09-28

2.4w+

社区成员

C/C++ 工具平台和程序库
申请成为版主
社区公告
暂无公告