我有一個虛擬class Element
迫使其派生類有一個==操作符:如何強制派生類比較
所以,我的派生類(整數,字)實現該操作。
我有一個class Group
基本上是一個元素列表。
在一個功能,我想如果從一組它等於給不同的組的元素的元素,所以我用比較:
if(actual == lookingfor)
其中實際和lookingfor是指向元素...但是比較是在指針級別進行的,所以兩個指針總是不同的。
我該如何強制從元素的派生類中使用運算符==?
編輯:
class Element
{
virtual int operator==(Elemento *)=0;
}
class Word : public Element { ... }
int Word::operator==(Element * element)
{
Element * ptr = element;
Word * wordPtr = dynamic_cast< Word * >(ptr);
int equal = 0;
if(wordPtr)
{
equal = strncmp(this->ptr,wordPtr->ptr,49)==0;
}
return igual;
}
謝謝refp,我必須使用指針,因爲我必須堅持已經寫成的「Element.h」虛擬 int operator ==(Elemento *)= 0; 當我嘗試解除引用時,我得到一個錯誤:在'*實際== *尋找'中找不到'操作符==' – ednincer
它實際上使用: actual-> operator ==(尋找) 謝謝! – ednincer