Перегружена == функция не вызывается - PullRequest
2 голосов
/ 18 февраля 2012

В настоящее время я работаю над перегрузкой оператора == для моего связанного списка.У меня в заголовке есть оператор, настроенный следующим образом:

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 представляет собой список целых.

1 Ответ

3 голосов
/ 18 февраля 2012

Ну, std::vector функции-члены begin() и end() возвращают итератор типа std::vector<T>::iterator или `std::vector<T>::const_iterator в зависимости от того, является ли векторный объект const или неконстантным. Что бы это ни было, тип итератора не определен вами. Перегрузка == в вашем классе sqrlist ничего не делает. Перегрузка == должна быть членом класса итератора вектора, который вы не можете редактировать.

Также обратите внимание, что класс итераторов вектора уже перегружен == и != операторы. Поэтому, когда вы сравниваете итераторы, используя ==, он вызывает функцию-член класса итераторов вектора.

...