我有麻煩設計類似當此如何減少具有相同名稱但類型不同的數據成員的類的代碼重複?
class C1 {
public:
void foo();
}
class C2 {
public:
void foo();
}
C1和C2具有兩個派生類的相同方法foo(),
class Derived1 : public Base {
public:
void Update() {
member.foo();
}
private:
C1 member;
}
class Derived2 : public Base {
public:
void Update() {
member.foo();
}
private:
C2 member;
}
更新()是完全相同的,但類型的成員是不同的。 所以我必須複製每個新派生類的更新工具。
這是一種減少這種代碼重複的方法嗎?我只用宏解決問題。 我覺得這是有模板來解決這個更優雅的方式,但我不出來..
編輯: 感謝了很多人,但我想我錯過了什麼..
1。我正在使用C++
2.實際上,每個Derived類都有大約5個成員,它們都提供了foo()方法並從相同的基類派生。我的情況是,我已經編寫了一個(非常長的)Update()方法,它可以在沒有任何修改的情況下適用於每個派生類。所以我只是將這個Update()複製並粘貼到每個新類的Update()中,這會導致可怕的代碼重複。我想知道是否有一種方法可以避免重寫Update(),並且可以減少重複。
THX再次
而不是那些派生的,爲什麼不只是:「typedef Dervied1 CTemplateBase;」和「typedef Dervied2 CTemplateBase ;」 (顯然派生不再是一個好名字,但你明白了)。 –
user83255
2009-05-08 06:13:53
@ilproxil - 是的,我想這是可以接受的。但我會留下它,因爲它是爲了清晰起見。 – LeopardSkinPillBoxHat 2009-05-11 06:26:35