您的位置:首页 > 其它

boost的signal和solt机制使用入门

2016-08-06 16:38 405 查看
使用boost.signal

signal-slot在boost中不是纯头文件,需要一个libboost_signals.so文件。

boost.signal提供了一个多播委托机制,通过它可以非常容易的实现观察者模式:

void print_sum(float x, float y)
{
std::cout << "The sum is " << x+y << std::endl;
}

void print_product(float x, float y)
{
std::cout << "The product is " << x*y << std::endl;
}

void print_difference(float x, float y)
{
std::cout << "The difference is " << x-y << std::endl;
}

int main()
{
boost::signal<void (float, float)> sig;

sig.connect(print_sum);
sig.connect(print_product);
sig.connect(print_difference);

sig(5, 3);
}

.

用boost.signal实现多播委托

The Boost C++ Libraries 
*****

#include <boost/signals2.hpp>
#include <iostream>

using namespace boost::signals2;

int main()
{
signal<void()> s;
s.connect([]{ std::cout << "Hello, world!\n"; });
s();
}

.


error: ‘signal_set’ in namespace ‘boost::asio’ does
not name a type

boost.singal不是线程安全的,用boost.singal2吧

LIBS+="-LE:/boost_1_61_0/lib/"-llibboost_signals-mgw49-mt-1_61
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  Boost库