2012-02-18 3 views
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. Когда я помещаю точку отладки в функцию перегрузки, она говорит, что линия не будет достигнута.

Любые советы или предложения приветствуются. Благодаря!

EDIT: vlist - это список ints.

+0

Какой тип 'begin()' return? – tzaman

+0

@tzaman итератор – Johnston

+1

похоже, что вы определили 'operator ==' для 'sq_list'. Но сравнение, которое вы выполняете, похоже на «итераторы». Если это так, 'operator ==' не будет вызываться. Он будет вызываться, если вы выполните 'vlist == vlist'. – Naveen

ответ

3

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

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

+1

Я считаю, что правильно, что он должен быть итератором. я изменил его назад, и я добавил константу, но моя точка останова все еще говорит, что ее не будет достигнуто. – Johnston

+0

vlist был моим списком значений, а sq_list был моим классом - моя ошибка за то, что там до – Johnston

+0

@Mankarse: Хороший! Ред. – Nawaz

Смежные вопросы