我正在尝试覆盖 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,则此代码可以正常工作。但是,我从 IState 继承了 State。如果我传递具有相同内容的状态,我希望我的 Equals 函数返回 true。
我知道 State 与 IState 不同,但是是否有一个运算符可以让我检查它们是否从同一个基类继承?也许重载运算符 typeid可能会有所帮助,但这似乎很麻烦