我試圖覆蓋對象::的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