Невозможно использовать константный вектор C++, переданный в функцию для find() [дубликат]C++

Программы на C++. Форум разработчиков
Ответить Пред. темаСлед. тема
Anonymous
 Невозможно использовать константный вектор C++, переданный в функцию для find() [дубликат]

Сообщение Anonymous »

Вот класс с некоторыми данными и перегруженным оператором равенства:

Код: Выделить всё

class Point {
int x, y;

public:
Point(int x0, int y0): x(x0), y(y0) {};
bool operator==(const Point& rval) {
return x == rval.x && y == rval.y;
}
};
А вот функция, которая успешно принимает вектор таких объектов и сообщает, содержится ли в нем данный объект:

Код: Выделить всё

bool hasVal(std::vector
& vec, const Point& target) {
return find(vec.begin(), vec.end(), target) != vec.end();
}
Теперь я думаю (и желаю), что могу сделать аргумент ссылки на вектор константным, поскольку он не предназначен каким-либо образом изменять вектор или его содержимое. . Однако пометка векторной ссылки const приводит к ошибке компилятора:
241 17 C:\Program Files (x86)\Embarcadero\Dev-Cpp\TDM-GCC -64\lib\gcc\x86_64-w64-mingw32\9.2.0\include\c++\bits\predefine_ops.h [Ошибка] нет совпадения для 'operator==' (типы операндов: 'const Point' и 'const Point')
Связано: аналогичная проблема возникает, если я создаю класс с таким вектором в качестве члена и попытаться выполнить ту же работу в функции-члене с тегом const.
(Примечание: создание векторного аргумента, такого как const, похоже, отлично работает для вектора примитивов, таких как int, но не для этого типа объекта, определенного программистом.)
В чем здесь проблема и как ее лучше всего решить?

Подробнее здесь: https://stackoverflow.com/questions/792 ... n-for-find
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «C++»