Начните с чтения текста ошибки точно таким, какой он есть:
binary '==': не найден оператор, который принимает левый операнд типа 'const entry'
Это означает, что он не может найти ни одного оператора ==
, который принимает тип entry
в качестве левого операнда. Этот код недействителен:
entry const e;
if (e == foo)
Вы показали нам код для своего класса списка, но это не та ошибка, о которой идет речь. Ошибка связана с отсутствием операторов для типа entry
, что бы это ни было. Либо дайте классу функцию operator==
, либо объявите отдельную функцию operator==
, которая принимает const entry&
в качестве первого параметра.
struct entry {
bool operator==(const entry& other) const;
};
// or
bool operator==(const entry& lhs, const entry& rhs);
Я думаю, что последний является предпочтительным стилем.