我有一个 virtualclass Element
强制它的派生类有一个 == 运算符:
所以,我有实现该运算符的派生类(整数、字)。
我有一个class Group
基本上是一个元素列表。
在一个函数中,我想比较一个组中的一个元素是否等于另一个组的一个元素,所以我使用:
if(actual == 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;
}