数组索引运算符重载.现在无法使用比较运算符

Array Index operator overloaded.Unable to use the comparison operator now

本文关键字:运算符 比较 索引 重载 数组      更新时间:2023-10-16

I 重载数组下标 ( [] ) 运算符。我已经让它返回一个整数,因为我不会将其用于任何赋值目的。但是,我现在无法使用比较运算符!

这是代码

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;
            }
        }
    }
}

运算符重载的实现在派生类中执行。

由于重载运算符将返回一个整数,因此比较是在两个整数之间进行的,这是完全有效的。为什么这条线仍然给出错误?

在C++中,this是一个指针,需要取消引用才能使用它。当然,除非您将其传递给函数。

因此,为了使您的比较起作用,它应如下所示:

if((*this)[j] == (*second)[i])
{
    break;
}

编辑:second也是一个Set指针,因此您必须取消引用它才能使用它。