找回密码
 用户注册

QQ登录

只需一步,快速开始

查看: 5127|回复: 8

这个用法

[复制链接]
发表于 2010-5-5 11:03:10 | 显示全部楼层 |阅读模式
template ACE_Singleton<ACE_Reactor, ACE_Null_Mutex> * ACE_Singleton<ACE_Reactor, ACE_Null_Mutex>::singleton _;

什么意思?
发表于 2010-5-6 10:38:07 | 显示全部楼层
楼主从哪搞的这段代码?
不像ACE的源代码吧。

ACE_Reactor本身就是单件,
再用ACE_Singleton单件模板包装一下,
没啥意义吧?
发表于 2010-5-6 11:36:07 | 显示全部楼层

回复 #2 modern 的帖子

APG 教程95页 第2行 例7-5  7.2.1同时使用接受器和连接器 一节也有这个用法
发表于 2010-5-6 11:42:59 | 显示全部楼层
你说的两个地方我都没有发现呀、、、
发表于 2010-5-6 12:31:42 | 显示全部楼层

回复 #4 modern 的帖子

ACE_wrapper 里的 examples  C++NPv2_TPLS  TP_Logging_Server.cpp 67行
发表于 2010-5-6 13:38:37 | 显示全部楼层
明明是C++NPv2。
代码我帮你贴出来了,你的问题一直没有上下文,别人很难分析的。
#if defined (ACE_HAS_EXPLICIT_STATIC_TEMPLATE_MEMBER_INSTANTIATION)
template ACE_Singleton<TP_Logging_Task, ACE_Null_Mutex> *
  ACE_Singleton<TP_Logging_Task, ACE_Null_Mutex>::singleton_;
template ACE_Unmanaged_Singleton<TP_Logging_Task, ACE_Null_Mutex> *
  ACE_Unmanaged_Singleton<TP_Logging_Task, ACE_Null_Mutex>::singleton_;
#endif /* ACE_HAS_EXPLICIT_STATIC_TEMPLATE_MEMBER_INSTANTIATION */

看似模版静态成员的初始化,
应该是在特定模版实现的编译器下的语法吧。
至少在VC下是不生效的代码。
发表于 2010-5-6 13:40:16 | 显示全部楼层
另,不知道楼主最开始的代码源自何处,
因为ACE_Reactor本身实现即为单件因此,不要这样用,
其他的类使用ACE_Singleton达到
双重加锁单件的效果是十分方便的。
发表于 2010-5-6 13:48:13 | 显示全部楼层
看了你问我的其他的帖子,
感觉楼主应该是对STL不太了解吧。
还是先找几本经典的介绍STL的书籍补一下基础知识吧。
 楼主| 发表于 2010-5-6 15:18:51 | 显示全部楼层
代码是在      ACE-5.7.7\ACE_wrappers\examples\Logger实例中的。。确实对模版这类东西比较晕。
您需要登录后才可以回帖 登录 | 用户注册

本版积分规则

Archiver|手机版|小黑屋|ACE Developer ( 京ICP备06055248号 )

GMT+8, 2024-11-22 12:06 , Processed in 0.018912 second(s), 6 queries , Redis On.

Powered by Discuz! X3.5

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表