2

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

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 是一个整数列表。

4

1 回答 1

3

好吧,std::vector成员函数begin()并返回类型为 或end()的迭代器,这取决于向量对象是还是非常量。不管它是什么,迭代器类型都不是你定义的。在你的类中重载什么都不做。重载应该是向量的迭代器类的成员,您不能对其进行编辑。std::vector<T>::iterator`std::vector<T>::const_iteratorconst==sqrlist==

另请注意,vector 的迭代器类已经重载了==!=运算符。因此,当您使用 比较迭代器时==,它正在调用向量迭代器类的成员函数。

于 2012-02-18T04:30:07.507 回答