Использование struct с перегруженным оператором `<` приводит к `no match для‘ operator <’` Сообщение об ошибке при вызовC++

Программы на C++. Форум разработчиков
Ответить
Anonymous
 Использование struct с перегруженным оператором `<` приводит к `no match для‘ operator <’` Сообщение об ошибке при вызов

Сообщение Anonymous »

Я хочу использовать std :: set с пользовательской структурой, которую я определил, аналогично заданному здесь вопросу. Таким образом, в этом случае структура нуждается в дополнительной перегрузке оператора

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

#include 

struct Point {
float x;
float y;
float z;

inline bool
operator < (const Point& other)
{
// Based on this example:
// https://en.cppreference.com/w/cpp/utility/tuple/tie
return std::tie(x, y, z) < std::tie(other.x, other.y, other.z);
}
};
< /code>
Пока все хорошо. Теперь я хочу, чтобы экземпляр этой структуры был вставлен в экземпляр std :: set 
.

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

int
main(int argc, char* argv[])
{
std::set points;
Point point;
point.x = 0.1f;
point.y = 0.2f;
point.z = 0.3f;

points.insert(point);

return 0;
}
< /code>
Тем не менее, составление этого кода приводит к сообщению об ошибке: < /p>
/usr/include/c++/13/bits/stl_function.h:408:20: error: no match for ‘operator
Я не совсем понимаю это сообщение об ошибке - почему оно жалуется на оператор не совпадающего? Что здесь не так, может быть, есть ошибка в перегрузке оператора? Или это связано с перегрузкой, требующей экземпляров Const 
? Заранее спасибо!


Подробнее здесь: https://stackoverflow.com/questions/796 ... perator-er
Ответить

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

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

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

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

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