日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

boost事件处理

發布時間:2023/12/18 编程问答 24 如意码农
生活随笔 收集整理的這篇文章主要介紹了 boost事件处理 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

盡管這個庫的名字乍一看好象有點誤導,但實際上并不是如此。 Boost.Signals 所實現的模式被命名為 '信號至插槽' (signal to slot)。它基于下面概念:當相應的信號被發出時。相關聯的插槽即被運行。

原則上,你能夠把單詞 '信號' 和 '插槽' 分別替換為 '事件' 和 '事件處理器'。 只是,因為信號能夠在隨意給定的時間發出。所以這一概念放棄了 '事件' 的名字。

因此。Boost.Signals 沒有提供不論什么類似于 '事件' 的類。

相反,它提供了一個名為 boost::signal 的類,定義于boost/signal.hpp. 實際上,這個頭文件是唯一一個須要知道的,由于它會自己主動包括其他相關的頭文件。

Boost.Signals 定義了其他一些類。位于 boost::signals 名字空間中。 因為boost::signal 是最常被用到的類,所以它是位于名字空間boost 中的。

void func()
{
std::cout<<"Hello World!"<<std::endl;
} int main()
{
signals2::signal <void()> s;
s.connect(func);
s();
return 0;
}

boost::signal 實際上被實現為一個模板函數。具有被用作為事件處理器的函數的簽名,該簽名也是它的模板參數。 在這個樣例中。僅僅有簽名為void () 的函數能夠被成功關聯至信號s

函數 func() 被通過 connect() 方法關聯至信號s。 因為func() 符合所要求的
void () 簽名,所以該關聯成功建立。因此當信號s 被觸發時,func() 將被調用。

信號是通過調用 s 來觸發的,就象普通的函數調用那樣。 這個函數的簽名相應于作為模板參數傳入的簽名:由于
void ()
不要求不論什么參數,所以括號內是空的。

調用 s 會引發一個觸發器,進而運行對應的 func() 函數 - 之前用connect() 關聯了的。

int func1()
{
std::cout<<"func1"<<std::endl;
return 1;
} int func2()
{
std::cout<<"func2"<<std::endl;
return 2;
} int main()
{
boost::signals2::signal<int ()> s;
s.connect(func1);
s.connect(func2);
std::cout<<s()<<std::endl;
return 0;
}

編譯后輸出:

func1

func2

1

func1()func2() 都具有int 類型的返回值。

s 將處理兩個返回值,并將它們都寫出至標準輸出流。 那么,究竟會發生什么呢?

以上樣例實際上會把 1寫出至標準輸出流。 兩個返回值都被 s 正確接收。但除了第一個值。其他值都會被忽略。 缺省情況下,全部被關聯函數中。實際上僅僅有第一個返回值被返回。

signal模擬程序:

  1. class Buttion
  2. {
  3. public:
  4. void connect(void (*f)(int, int));
  5. void OnBtnClick();
  6. private:
  7. void (*fuc_)(int, int);
  8. };
  9. void Buttion::connect(void (*f)(int, int))
  10. {
  11. fuc_ = f;
  12. }
  13. void Buttion::OnBtnClick()
  14. {
  15. fuc_(10, 20);
  16. }
  17. void PrintCodeline(int x, int y)
  18. {
  19. cout<<"x:"<<x<<",y:"<<y<<endl;
  20. }
  21. int _tmain(int argc, _TCHAR* argv[])
  22. {
  23. Buttion btn;
  24. btn.connect(&PrintCodeline);
  25. btn.OnBtnClick();
  26. getchar();
  27. return 0;
  28. }

總結

以上是生活随笔為你收集整理的boost事件处理的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 无遮挡裸光屁屁打屁股男男 | 91精彩视频在线观看 | 天天视频色| 中文在线观看免费网站 | 成人午夜影院在线观看 | 激情五月视频 | 一二三四视频社区在线 | 日韩一区av在线 | 久久久久久蜜桃 | 欧美日韩日本国产 | 日韩一级二级三级 | 中文字幕在线国产 | xiuxiuavnet | 歪歪视频在线观看 | 杨幂一区二区国产精品 | 日本老年老熟无码 | 欧美日韩精品综合 | 中文字幕 欧美日韩 | 亚洲一区二区免费视频 | 黄色国产一区 | 国产视频一区二区三区在线播放 | 黄色片网站在线播放 | 一级久久久久久 | 18做爰免费视频网站 | 国产精品三级久久久久久电影 | 欧美日韩在线观看免费 | 正在播放欧美 | 精品一区二区成人免费视频 | 国产精品xxxxxx | 国产免费一区二区三区 | 久久中文字幕一区二区 | 国产视频精品免费 | 日韩在线播放av | 欧美三级在线视频 | avav我爱av | 免费人成网站 | 精品欧美一区二区三区免费观看 | 色悠悠国产精品 | 欧美五月激情 | 天堂视频在线观看免费 | 日批网址 | 少妇一区二区三区 | 男插女视频在线观看 | 夜晚福利 | 内射国产内射夫妻免费频道 | 国产调教视频 | 超碰123| 欧美丰满bbw | av三级网站 | 天天干,天天爽 | 青青草91久久久久久久久 | 欧美一区二区三区黄片 | 黄色一级片在线免费观看 | 91精品又粗又猛又爽 | 男人天堂黄色 | 久草小说 | 精品一区日韩 | www.射| 国产一区二区自拍 | 一区二区视频国产 | 激情久久综合 | 国产精品无码专区av在线播放 | 韩国精品一区二区三区 | 五月天免费网站 | 久久这里只有精品9 | 色黄网站在线观看 | 精品成人无码久久久久久 | 久久伊人免费 | 欧美视频免费在线观看 | 在线你懂得 | 少女逼逼| 免费精品视频 | 中文字幕人妻色偷偷久久 | 国产尤物在线 | 成人欧美一级特黄 | 黄色免费一级 | 狠狠干夜夜爽 | 自拍偷拍2019| 色婷婷成人网 | 久久久全国免费视频 | 伊人蕉| 天堂伊人 | 天堂中文在线8 | 久久中文字幕av | 色综合一区二区三区 | 狠狠躁天天躁综合网 | 国产成人三级在线 | 国产精品久久久久毛片大屁完整版 | 免费av一级片 | 国产又爽又黄又嫩又猛又粗 | 欧美网站在线观看 | 日本成人一二三区 | 黄色a毛片 | 日本特级淫片 | 99在线无码精品入口 | 亚洲精品一区二区三区在线观看 | 热热av| 亚洲精品国产精品乱码视色 | 男人添女人囗交视频 |