C++ .NET で Object::Equals をオーバーライドしようとしていますが、いくつかの問題が発生しています。
virtual bool IState::Equals(Object^ o) override{
if (o->GetType() == IState::typeid){
IState^ s = (IState^) o;
if (s->type == this->type &&
s->target_state == this->target_state &&
s->current_state == this->current_state){
return true;
}
else{
return false;
}
}
return false;
}
このコードは、o が IState の場合に正常に機能します。ただし、State を持つ IState から継承します。同じ内容の State を渡すと、Equals 関数が true を返すようにしたいと思います。
State は IState と同じではありませんが、同じ基本クラスから継承されているかどうかを確認できる演算子はありますか? 演算子の typeid をオーバーロードすると役立つかもしれませんが、それには多くの問題があるようです