0
有2個類,大多數代碼是相同的。使用模板來代替預處理?
template<typename T>
class A1 {
f1(){common code... do_with(_m) ... common code}
f2();
fn();
T _m;
};
template<typename T>
class A2 {
f1(){common code... do_with(_m, _b) ... common code}
f2();
fn();
B _b;
std::atomic<T*> _m;
};
因爲95%的代碼是一樣的,我想使那些2級爲一個,但我不能使用預處理因爲他們都將在一個項目中使用。因爲這兩個類是模板,所以我不能使用「模板方法」設計模式將相同的代碼提取到基類中,並將一些私有虛函數留給派生類來覆蓋。
是否有可能避免代碼重複?例如:
A<T, type_a1> a1;
A<T, type_a2> a2;
我已經考慮模板專業化,但它不能支持「提取碼的共同部分」,一個專門的類必須重寫整體功能