我在我的項目中有類似於以下結構的東西。實現接口的通用函數
class ProgrammersCacluator {
public:
virtual int add(int a, int b);
virtual int rshift(int a, int b);
}
class MathematiciansCalculator {
public:
virtual int add(int a, int b);
virtual int multiply(int a, int b);
}
我實現這些如下:
class ProgrammersCalculatorI : public virtual ProgrammersCalculator {
public:
int add(int a, int b);
int rshift(int a, int b);
}
int ProgrammersCalculatorI::add(int a, int b) {
return(a + b);
}
int ProgrammersCalculatorI::rshift(int a, int b) {
return(a >> b);
}
class MathematiciansCalculatorI : public virtual MathematiciansCalculator {
public:
int add(int a, int b);
int multiply(int a, int b);
}
int MathematiciansCalculatorI::add(int a, int b) {
return(a + b);
}
int MathematiciansCalculatorI::multiply(int a, int b) {
return(a * b);
}
現在我意識到,這是一個很多額外的語法,但大多數是由ICE(互聯網通信引擎)執行,這是我們正在使用的框架在項目的各個部分之間進行通信。
我特別關心的是add
函數的重複。我嘗試了多重繼承,但是(顯然)不起作用。
有沒有辦法調整ProgrammersCalculatorI
和MathematiciansCalculatorI
的結構使得add
方法只需要執行一次?
在實際項目中add
是幾百行長,並且有幾種類似的方法。
有一個「HumansCalculator」接口,爲數學家和程序員之間常見的所有操作提供虛擬功能? – Chad