随笔-3  评论-0  文章-1  trackbacks-0
根据网址:Boost C++ 库 第 4 章 事件处理
示例代码
 1 #include <boost/signal.hpp> 
 2 #include <iostream> 
 3 
 4 void func() 
 5 { 
 6   std::cout << "Hello, world!" << std::endl; 
 7 } 
 8 
 9 int main() 
10 { 
11   boost::signal<void ()> s; 
12   s.connect(func); 
13   s(); 
14 } 


编译:$ g++ Sample1.cpp -lboost_signals

一大堆提示信息:
/usr/local/include/boost/signal.hpp:17:4: warning: #warning "Boost.Signals is no longer being maintained and is now deprecated. Please switch to Boost.Signals2. To disable this warning message, define BOOST_SIGNALS_NO_DEPRECATION_WARNING."
口怕,实际上是提示我们Boost.Signals已经过期废弃不维护了,请选择用Boost.Signals2来替换。
首先,确定signal2位置:$ ls /usr/local/include/boost/signal2/
对,就是这个位置。
修改下原来代码
 1 #include <boost/signals2/signal.hpp> 
 2 #include <iostream> 
 3 
 4 void func() 
 5 { 
 6   std::cout << "Hello, world!" << std::endl; 
 7 } 
 8 
 9 int main() 
10 { 
11   boost::signals2::signal<void ()> s; 
12   s.connect(func); 
13   s(); 
14 } 

实际上修改的就是Line2和Line11,修改下include的signal.hpp文件位置以及命名空间
再编译: $ g++ Sample2.cpp -lboost_signals
现在OK,没有一大堆的warning了

后面再附加一个Functor的例子。
 1 #include <boost/signals2/signal.hpp>
 2 #include <iostream>
 3 
 4 int main() 
 5 {
 6   struct HelloWorld
 7   {
 8     void operator()() const {
 9       std::cout << "Hello, World!" << std::endl; 
10     }
11   };
12   
13   boost::signals2::signal<void()> sig;
14   HelloWorld hello;
15   sig.connect(hello);  // Note,not "sig.connect(hello());"
16   sig();
17 
18   return 0;
19 }

编译: $ g++ Sample3.cpp -lboost_signals
posted on 2015-11-09 01:35 machinemind 阅读(2457) 评论(0)  编辑 收藏 引用

只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理