我试图覆盖对象::的equals C++ .NET,但我遇到了一些困难如何检查两个对象是否从同一个基类继承?
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。如果我传递一个具有相同内容的状态,我希望我的Equals函数返回true。
我得到的状态是不一样的IState,但有没有一个运算符,这将允许我检查他们是否继承相同的基类? 也许重载运算符typeid 可能帮助,但它似乎有很多麻烦,
对于它的价值,你违反了.NET的准则,通过一个名称前缀为I的类(这表明它是一个接口)。由于C++/CLI和C++是非常不同的野兽,因此 – 2009-07-07 19:35:07
更改了标签。 :) – jalf 2009-07-07 19:35:51
你为什么重写界面中的任何东西?接口不应该有实现。 – CodeFusionMobile 2009-07-07 19:36:24