Как перегрузить оператор ==, чтобы увидеть, равны ли два объекта со строковым вектором? - PullRequest
0 голосов
/ 09 марта 2020

Я пишу класс с именем StringSet, в котором vector<string> data и int length являются частными членами.

bool StringSet::operator == (StringSet d)
{
    for (int i = 0; i < length; i++)
    {
        if (data[i] == d.data[i])
        {
            return true;
        }
    }
    return false;
}

Когда я пытаюсь вызвать эту функцию, как это,

StringSet doc1, doc2;
if (doc1 == doc2)
    {
        cout << "Both sentences are identical!\n";
    }

Я получаю ошибку подтверждения, говоря, что подстрочный вектор находится вне диапазона, я знаю, что это значит, но я не знаю как это здесь подразумевается. Если кто-то может указать на очевидную ошибку, которую я сделал, это было бы здорово, так как я новичок ie в c ++.

1 Ответ

6 голосов
/ 09 марта 2020

Все просто

bool StringSet::operator == (const StringSet& d) const
{
  return data == d.data;
}

std::vector и std::string уже имеют операторы сравнения, поэтому вам не нужно реализовывать что-то особенное.

...