我重载了数组下标([])运算符。我已经使它返回一个整数,因为我不会将它用于任何赋值目的。但是,我现在无法使用比较运算符!
这是代码
class Set
{
public:
virtual int operator[](int i) = 0;
virtual int size() = 0;
void union_operation(Set* second);
void interesction_operation(Set* second);
};
void Set::union_operation(Set* second)
{
int second_size = second->size();
for(int i=0;i<second_size;i++)
{
for(int j=0;j<this->size();j++)
{
//The line below doesnt work!
if(this[j]==second[i])
{
break;
}
}
}
}
运算符重载的实现是在派生类中执行的。
由于重载运算符将返回一个整数,因此比较在两个整数之间,这是完全有效的。为什么这一行仍然会出错?
答案 0 :(得分:0)
在C ++中,this
是一个需要解除引用才能使用它的指针。除非你将它传递给函数当然。
因此,为了使您的比较有效,它应如下所示:
if((*this)[j] == (*second)[i])
{
break;
}
编辑:second
也是Set
指针,因此您必须取消引用它才能使用它。