Как распечатать значение из вектора классов в С++
Определен
class Word
{
private:
std::string word;
std::string meaning;
public:
// все get
// перегружаю оператор ==
friend bool operator==(const Word& w1, const Word& w2)
{
return (w1.word == w2.word);
}
// перегружаю оператор <
}
Внутри main:
vector<Word> d;
// добавляю слово
// сортирую
// поиск слова и печать этого слова
void findWord(vector<Word>& d, std::string k)
{
SortWord(d);
std::vector<int>::iterator it;
it = find(d.begin(), d.end(), key);
if (it != d.end())
std::cout << "Element found in d: " << *it << '\n';
else
std::cout << "Element not found in d\n";
}
Выдает ошибку:
Severity Code Description Project File Line Suppression State Error (active) E0349 no operator "=" matches these operands
и
no operator "!=" matches these operands
Подскажит, как лучше найти слово из класса в векторе и распечать всю информацию об этом слове?
Ответы (1 шт):
Автор решения: Harry
→ Ссылка
Ваш оператор сравнения для работы find должен сравнивать не два Word, а Word со строкой:
friend bool operator== (const Word& w1, const string& w2)
{
return (w1.word == w2);
}
И, кстати, написать проще
auto it = find(d.begin(), d.end(), key);
не упоминая итератор явным образом.
И раз уж вы пишете
std::cout << "Element found in d: " << *it << '\n';
то вам явно нужен еще один оператор -
ostream& operator << (ostream& os, const Word& w)