使用sigc++插槽系统

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

非原创文章文中已经注明原地址,如有侵权,联系删除

关注公众号【高性能架构探索】,第一时间获取最新文章

转载文章受原作者版权保护。转载请注明原作者出处!

(0)
上一篇 2023年2月10日 上午11:48
下一篇 2023年2月10日 下午12:03

相关推荐