介紹一個類型安全的回調庫:libsigc++

類似於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;
}
發佈了39 篇原創文章 · 獲贊 8 · 訪問量 6萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章