根据网址:
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 阅读(2458)
评论(0) 编辑 收藏 引用