在大学里,我的任务是用c++设计和实现三个类: Integer (抽象),Binary和Decimal,用数组作为数字存储,Integer应该包含算术运算的虚拟方法。
所以我对最后一点有一些误解……方法应该有什么签名,以及如何在子类中定义它们?
发布于 2012-02-03 20:48:41
这不是一项简单的任务,因为它是算术运算的二进制运算符,并且是虚拟方法,是一种单一的调度机制。
事实上,这个问题的优雅解决方案应该需要Multimethods,而不是原生的C++。
作为一个提示,让我给你一个关于加法的想法:看看C++ dual dispatch和visitor pattern。
发布于 2012-02-03 19:11:40
class Integer {
public:
virtual void Add(Integer &B) { } = 0; // Adds B to the current value, etc..
}
class Decimal : public Integer {
public:
void Add(Decimal &B) { /* do sth */ }
}
int main(void) {
Integer *a = new Decimal();
Integer *b = new Decimal();
a->Add(b);
}
https://stackoverflow.com/questions/9134064
复制