用C 模板實現事件模型

2021-04-26 01:40:35 字數 394 閱讀 8241

c#語言中的委託模型封裝了函式指標的用法,而事件模型又在委託的基礎上實現了觀察者模式。這些在程式開發中有著非常好的應用。c++語言本身沒有為我們提供事件模型,如何在程式中實現自己的事件模型呢?本文將試著拋磚引玉……

首先,我們需要定義乙個基本的事件模型,支援函式指標的註冊和登出:

這個類還不能如我們想象的那樣工作,因為它還不能觸發事件。

為了觸發事件,我們必須要知道函式的引數個數和型別,怎麼辦呢?(只有編譯器能知道了)

沒有關係,通常我們的事件處理模組的引數個數都是有限的幾個,我們就提供0~2個引數的實現吧。

請看以下**:

下面我們就以printmessage來使用一下前面定義的事件模型:

編譯執行上述**,將輸出結果:

hello, world!

C 用模板實現順序表Vector

include以包含所需要的類檔案vector,還有一定要加上using namespace std。用模板寫函式或類都與型別無關,因此,stl中都是用模板實現容器,下面我們來介紹用模板實現順序表。pragma once include includeusing namespace std type...

C 模板實現佇列

我準備練習一下模板的知識,然後自己實現vector類。在這之前,先用模板實現乙個佇列來熱身吧。佇列的底層是鍊錶。主要是熟悉一下模板的寫法。另外,就是模板的定義和實現都要寫在乙個檔案中 export關鍵字可以避免這樣。還沒用過 所以倒數第二行我加了個 include queue.hpp 只能是hpp,...

用模板實現順序表Vector

pragma once include using namespace std include template class vector vector const t array,size t size start new t size finish start endofstorage fini...