在C 中使用類模板幫助使用者建立類例項

2021-07-12 01:07:40 字數 760 閱讀 8884

最近工作中使用c++遇到乙個問題,我建立了乙個管理執行緒的類threadcenter,這個類中包含乙個存放thread類指標的向量,而thread是乙個虛基類,我需要在threadcenter類中幫助使用者建立他們的派生類例項,以便確保管理的每個thread例項都存放於堆記憶體中,可以安全delete掉。於是我自然而然的想到提供乙個介面,讓使用者將他們的類作為引數傳進來。在我接觸過的像python,lua這樣的語言中,將類作為引數傳遞是一件很自然的事兒,在c++中卻不行,怎麼辦。

在解決的過程中,我只能感嘆一句,c++果然麻煩。

問題終究是要解決的,我的方法是使用類模板作為生成例項的工廠。例項工廠的**如下:

templateclass objectfactory

private:

objectfactory(){}

~objectfactory(){}

};

這裡將建構函式和析構函式放到private的原因是這個模板值用來建立其他類的例項,本身並不需要被例項化。

這樣,每次呼叫例項工廠類的produce()方法,就可以新建乙個t型別的例項。比如我有乙個類threadderive,通過例項工廠產生例項,可以使用如下**:

typedef objectfactorythreadderivedfactory;

thread *pt = threadderivedfactory::produce();

這樣,pt就指向了乙個新生成的threadderived類的例項。

在ASP中使用類

vbscript5中增加了許多新功能,最振奮人心的當屬類和正規表示式的出現。以下是本人寫的乙個解析html 的類。我是 學php的,語法有不習慣的地方,請大家多包含。class htmlparse 設定 initialize 事件。private sub class initialize myglo...

在C 中使用SerialPort類實現串列埠通訊

下面主要介紹該類的主要屬性 表1 和方法 表.2 檢視。使用system.io.ports讀取com口資料 表1 serialport類的常用屬性 名 稱 說 明 basestream 獲取 serialport 物件的基礎 stream 物件 baudrate 獲取或設定序列波特率 breakst...

C 類模板使用

一 為什麼要使用類模板 類模板與函式模板的定義和使用類似,有時,有兩個或多個類,其功能是相同的,僅僅是資料型別不同。二 類模板定義 template 型別形式參數列 類宣告 單個類模板使用 函式的引數列表使用虛擬型別 成員函式返回值使用虛擬型別 成員變數使用虛擬型別 模板類定義物件,必須顯示指定型別...