class Element
派生クラスに==演算子を強制する仮想があります。
そのため、その演算子を実装するクラス(Integer、Word)を派生させました。
基本的class Group
に要素のリストです。
関数では、グループの要素が別のグループの要素と等しいかどうかを比較したいので、次を使用しています。
if(actual == lookingfor)
ここで、actualとlookingforは両方ともElementへのポインターです...しかし、比較はポインターのレベルで行われているため、両方のポインターは常に異なります。
要素の派生クラスの演算子==を強制的に使用するにはどうすればよいですか?
編集:
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;
}