Вопрос

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

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.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top