这个用法
template ACE_Singleton<ACE_Reactor, ACE_Null_Mutex> * ACE_Singleton<ACE_Reactor, ACE_Null_Mutex>::singleton _;什么意思? 楼主从哪搞的这段代码?
不像ACE的源代码吧。
ACE_Reactor本身就是单件,
再用ACE_Singleton单件模板包装一下,
没啥意义吧?
回复 #2 modern 的帖子
APG 教程95页 第2行 例7-57.2.1同时使用接受器和连接器 一节也有这个用法 你说的两个地方我都没有发现呀、、、回复 #4 modern 的帖子
ACE_wrapper 里的 examplesC++NPv2_TPLSTP_Logging_Server.cpp 67行 明明是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下是不生效的代码。 另,不知道楼主最开始的代码源自何处,
因为ACE_Reactor本身实现即为单件因此,不要这样用,
其他的类使用ACE_Singleton达到
双重加锁单件的效果是十分方便的。 看了你问我的其他的帖子,
感觉楼主应该是对STL不太了解吧。
还是先找几本经典的介绍STL的书籍补一下基础知识吧。 代码是在 ACE-5.7.7\ACE_wrappers\examples\Logger实例中的。。确实对模版这类东西比较晕。
页:
[1]