应该如何实施
operator==(const Base& base)
比较子类 st 调用时调用将被正确调度为
Base* base1 = new Derived1();
Base* base2 = new Derived2();
base1->operator==(*base2)?
应该如何实施
operator==(const Base& base)
比较子类 st 调用时调用将被正确调度为
Base* base1 = new Derived1();
Base* base2 = new Derived2();
base1->operator==(*base2)?
这会让你达到你拥有的地步
Derived1::IsEqual(const Base& base)
叫。从这里你有一些选择
如果派生的数量很小且有限,则可以实现
virtual bool Base::IsEqualToDerived(const Derived1& d) {return false};
virtual bool Base::IsEqualToDerived(const Derived2& d) {return false};
作为虚拟方法。在 Derived1 中,您可以覆盖并进行真实比较。
这似乎是关于类和类型的通用 C++ 问题,而不是关于 operator== 的特定问题。据我所知,在您给出的特定示例中,除了使用dynamic_cast之外别无他法