線上訂房服務-台灣趴趴狗聯合訂房中心
發文 回覆 瀏覽次數:1470
推到 Plurk!
推到 Facebook!

(XE 10.1 C++) function delegate 練習

 
fuuk21
一般會員


發表:16
回覆:7
積分:4
註冊:2003-04-18

發送簡訊給我
#1 引用回覆 回覆 發表時間:2018-01-22 20:36:08 IP:125.230.xxx.xxx 未訂閱
代碼實現在 uFunctionDelegate.hpp 檔案

1. 自建 'TMyDelegate' 類, 繼承自 TThread, 利用TThread屬性 FreeOnTerminate = true(線程離開後, 自動釋放 object), 來實現函數委派

2. 自建 'TThxDelegate' 類, 繼承自 TCppInterfacedObject, 利用TThread::Synchronize和TThread::Queue 這2個靜態成員函數,來實現函數委派

3. 自建 'TfnDelegate' 類, 繼承自 TCppInterfacedObject, 再依照函數型別的不同(注:1), 建立子類(繼承自 TfnDelegate)(注:2)

利用TThread::CreateAnonymous 這個靜態成員函數(注:3), 來實現(注:4) 來實現函數委派


注:1 委派函數參數型別和回傳型別目前只完成 , float, double, int, String, char, wchar_t, const char *, const wchar_t *

注:2 委派函數型別, 沒回傳值, 參數個數 0~3 個, 子類別依序是: TfnDelegateTProc, TfnDelegateTProc__1, TfnDelegateTProc__2, TfnDelegateTProc__3
委派函數型別, 有回傳值, 參數個數 0~3 個, 子類別依序是: TfnDelegateTFunc, TfnDelegateTFunc__1, TfnDelegateTFunc__2, TfnDelegateTFunc__3

注:3 TProc是一個抽象類別 (成員函數 Invoke=0), TfnDelegate 實現 Invoke 這成員函數; 當調用 TThread::CreateAnonymous, Invoke會被觸發(被呼叫, 被喚起),
然後執行委派的函數或是程序, 當事情完成後, 再回呼(callback) 完成函數或完成事件

注:4 委派函數有回傳值,用泛型函數 fnDelegate<>, 委派函數沒回傳值 用泛型函數 procDelegate<>

編輯記錄
fuuk21 重新編輯於 2018-01-22 20:54:37, 註解 無‧
系統時間:2024-04-26 3:36:16
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!