http://www.cppblog.com/gaimor/archive/2010/02/22/108236.html?opt=admin
我所知的c++插槽系统由3个boost的,sigslot的,sigc++的
这里介绍sigc++的使用
最基本的使用方法:
1.回调函数为一般函数:
代码如下:1#include<iostream>
2#include<string>
3#include<sigc++/sigc++.h>
4
5//! 普通函数
6voidPrint(conststd::string&str)
7{
8std::cout<<str;
9}
10
11intmain()
12{
13//! 返回值void,参数const std::string&
14sigc::signal<void,conststd::string&>signal_print;
15//! 链接函数
16signal_print.connect( sigc::ptr_fun(&Print));
17//! 发射信号
18signal_print.emit("hello world\n");
19
20system("pause");
21return0;
22}2.回调函数为成员函数1#include<iostream>
2#include<string>
3#include<sigc++/sigc++.h>
4
5classPrinter :publicsigc::trackable
6{
7public:
8voidWork(){slot.emit("work\n");}
9typedef sigc::signal<void,conststd::string&>Slot;
10Slot slot;
11voidPrint(conststd::string&str){std::cout<<str;}
12};
13
14intmain()
15{
16Printer printer;
17Printer::Slot::iterator iter=printer.slot.connect(sigc::mem_fun(&printer,&Printer::Print));
18printer.Work();
19iter->disconnect();
20printer.Work();
21
22system("pause");
23return0;
24}在sigc++中sigc::ptr_fun负责绑定一般函数
而sigc::men_fun负责绑定成员函数.
可以看到一般的信号插槽系统都具备以下几个函数
a.插槽连接
b.插槽断开
c.信号发射
当然有的插槽信号库还提供其它一些函数
比如对信号设定优先级等等
这是简单实用sigc++的例子
不过若论简单性的话还是sigslot比较好,只有一个头文件 原文链接: https://www.cnblogs.com/jingzhishen/p/3430784.html
欢迎关注
微信关注下方公众号,第一时间获取干货硬货;公众号内回复【pdf】免费获取数百本计算机经典书籍
原创文章受到原创版权保护。转载请注明出处:https://www.ccppcoding.com/archives/112595
非原创文章文中已经注明原地址,如有侵权,联系删除
关注公众号【高性能架构探索】,第一时间获取最新文章
转载文章受原作者版权保护。转载请注明原作者出处!