我的项目中有类似于以下结构的东西。
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
功能的重复。我尝试了多重继承,但这(显然)不起作用。
有没有办法调整 and 的结构,ProgrammersCalculatorI
使得MathematiciansCalculatorI
该add
方法只需要执行一次?
在实际项目add
中有几百行,类似的方法有好几种。