如何将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

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

...全文
64 2 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
MadLee 2003-12-23
  • 打赏
  • 举报
回复
哦,谢谢。
yisan 2003-12-23
  • 打赏
  • 举报
回复
class HumanJoints
{
friend struct Loki::CreateUsingNew<HumanJoints>;
public:
...
};

这是我自己曾经写的一段代码。
因为不是直接以SingletonHolder而是以CreateUsingNew(或其他两个policies之一)来创建对象的。你分析一下源代码就知道了。

24,860

社区成员

发帖
与我相关
我的任务
社区描述
C/C++ 工具平台和程序库
社区管理员
  • 工具平台和程序库社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧