如何实施
operator==(const Base& base)
比较子类s.t.调用
时将正确调度调用Base* base1 = new Derived1();
Base* base2 = new Derived2();
base1->operator==(*base2)?
答案 0 :(得分:6)
这可以让你达到
的程度Derived1::IsEqual(const Base& base)
调用。从这里你有一些选择
如果派生的数量很少且有限,则可以实现
virtual bool Base::IsEqualToDerived(const Derived1& d) {return false};
virtual bool Base::IsEqualToDerived(const Derived2& d) {return false};
作为虚拟方法。在Derived1中,您可以覆盖并比较实数。
答案 1 :(得分:1)
这似乎是关于类和类型的通用C ++问题,而不是关于operator ==的特定问题。据我所知,在您提供的特定示例中,除了使用dynamic_cast
之外别无他法