2010-10-25 65 views
0

我有多個類在行爲上有很大不同,但同時共享必須訪問成員變量的通用函數。多個類的共享模板成員函數

所以我想要做的是創建一個模板化的成員函數,以避免額外的複製粘貼代碼重複。

最終的結果應該是這樣的:

ClassA::CallFoo() 
ClassB::CallFoo() 
ClassC::CallFoo() 

其中CallFoo()在像一個共享文件被定義[怪人假想語法]

<template this* T>::CallFoo(){T->memberX->DoStuff();}

是類似的東西可以用C++ ?我似乎無法找到任何有關代碼重用和多個類。

編輯: 我有多個類,ClassA,ClassB,ClassC,... ClassX,所有這些都有一個成員變量memberX。爲了在類的成員函數中使用該成員變量,我必須對該變量進行一些設置和預處理,這對所有類都是相同的。所以ClassA可以有一個方法DoCoolStuff1(),它必須調用[shared code]來獲取更新的共享變量,ClassB可以有一個方法DoBoringStuff1(),它也調用[shared code]。

不幸的是,memberX不在我的源代碼中,而是在庫頭文件ClassA:public LibClass中,所以我不能在那裏覆蓋它。

+0

可不可以給更具體的例子嗎?詳細闡述你正試圖解決的問題,而不是理論。 – GManNickG 2010-10-25 09:43:18

+0

試圖更好地解釋,請參閱編輯... – Coder 2010-10-25 09:56:07

+0

你是說所有這些類都是LibClass類的子類,這就是數據成員所在的位置? – 2010-10-25 10:00:40

回答

1

如果你說的是,所有這些類的從每個LibClass,其中包含memberX繼承,則只需添加繼承多一個層:

class myLibClass : public LibClass 
{ 
    void CallFoo() { // do stuff with memberX } 
}; 

class classA : public myLibClass {}; 
class classB : public myLibClass {}; 
etc...