重载==函数未被调用

Overloaded == function not getting called

本文关键字:调用 函数 重载      更新时间:2023-10-16

我目前正在为我的链表重载==运算符。我在标题中设置了如下操作员:

class sqrlst
{
public:
std::vector<int> vlist;
bool operator == (iterator const & rhs )
{
     return this->iter == rhs.iter;
};

然后,我在头文件中创建了一个方法,代码如下

void test()
    {
        bool flag;
        if (vlist.begin()==vlist.begin())
        {
            flag=true;
        }
    };
};

然而,当调用此方法时,当它到达if语句时,它不会转到我的重载==运算符函数。当我把调试点放在重载函数上时,它表示将无法到达该行。

任何提示或建议都将不胜感激。谢谢

编辑:vlist是一个int列表。

好吧,std::vector成员函数begin()end()返回类型为std::vector<T>::iterator`std::vector<T>::const_iterator的迭代器,这取决于向量对象是const还是非常量。不管它是什么,迭代器类型都不是由您定义的。在类sqrlist中重载==不会有任何作用。重载==应该是向量迭代器类的成员,不允许编辑该类。

还要注意,向量的迭代器类已经重载了==!=运算符。因此,当您使用==比较迭代器时,它调用的是向量迭代器类的一个成员函数。