我在我的项目中有类似于以下结构的东西。实现接口的通用函数
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