Перегружено == функция не вызывается
-
27-10-2019 - |
Вопрос
В настоящее время я работаю над перегрузкой оператора == для моего связанного списка. У меня в заголовке настройка оператора, как и следующее:
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
ничего не делает. Перегрузка ==
должен быть членом класса итератора Vector, который вы нет разрешено редактировать.
Также обратите внимание, что класс итератора Vector уже перегружен ==
а также !=
операторы. Поэтому, когда вы сравниваете итераторы, используя ==
, это вызывает функцию члена класса итератора Vector.