1. 程式人生 > >在C++中使用libuv時對回撥的處理 (2)

在C++中使用libuv時對回撥的處理 (2)

# 前情簡介 在完成了第一版的《[在C++中使用libuv時對回撥的處理](https://www.cnblogs.com/ink19/p/13618393.html)》之後,在對專案進行開發的時候,還是感覺有一些難受。 因為在實際操作的時候,需要構建一個結構體,並且需要對這個結構體的記憶體進行管理,非常的麻煩。 在對C++的模板程式設計進行簡單的學習後,瞭解到一個比較基本的知識。如果一個值或者型別能在編譯的時候確定,那麼它是一定可以作為模板引數的。 反觀我之前為了完成操作構建的結構體,可以很明顯的發現,成員函式指標那一個變數是一直保持不變的,而且可以在編譯的時候確定,所以是有辦法將成員函式指標放入模板裡面的。 # 解決方案 ## 使用回撥的函式 ```C++ typedef struct { void *data; int s; } call_back_t; typedef void (*call_back_func_t)(call_back_t *t, int s, int v); int call_back_func(call_back_t *t, call_back_func_t func) { func(t, t->s, 12); return 0; } ``` ## 回撥函式及其類 ```C++ class CallBack { public: int a = 0; void call_back(call_back_t *t, int s, int v) { std::cout << "t->s:" << t->s << std::endl; std::cout << "s:" << s << std::endl; std::cout << "v:" << v << std::endl; std::cout << "a:" << a << std::endl; } }; ``` ## 解決方案 ```C++