您的位置:首页 > 编程语言 > C语言/C++

介绍一个类型安全的回调库:libsigc++

2016-04-18 15:21 176 查看
类似于QT的信号与槽,可以一对一的绑定,也可以一对多多的绑定,很方便:

最初是在GTKMM官网发现的,使用c++语言,windows下也可以使用。

http://www.gtkmm.org/en/download.html

下面放出2个例子

例一:绑定成员函数

#include <iostream>
#include <sigc++/sigc++.h>

class Cat
{
public:
void cry(int i){ std::cout << "cat:" << i << std::endl; }
};

class Dog
{
public:
void say(int i){ std::cout <<"dog:"<< i << std::endl; }
};

int main()
{
Cat cat3;
sigc::signal<void, int>mySignal3;
mySignal3.connect(sigc::mem_fun(cat3, &Cat::cry));
mySignal3.connect(sigc::mem_fun(Dog(), &Dog::say));
mySignal3.emit(001);  //向dog和cat发送信号。

return 0;
}


例二:绑定普通函数

#include <iostream>
#include <string>

#include <sigc++/sigc++.h>

void speak(const std::string& str)
{
std::cout << str;
}

int main()
{
sigc::signal<void, const std::string&> mySignal;

mySignal.connect(sigc::ptr_fun(&speak));

mySignal.emit("hello world\n");

return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: