どのように実装すべきか
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 では、オーバーライドして実際に比較します。
これは、operator ==に関する特定の質問ではなく、クラスと型に関する一般的なC++の質問のようです。私の知る限り、あなたが与えている特定の例では、dynamic_castを使用する以外に方法はありません。