Можно ли определить оператор сравнения по умолчанию для структуры C?C++

Программы на C++. Форум разработчиков
Ответить
Anonymous
 Можно ли определить оператор сравнения по умолчанию для структуры C?

Сообщение Anonymous »

Я хочу использовать структуру C () в моей программе на C++20, но я хочу иметь возможность сравнивать два экземпляра termios.
Поскольку сравнения по умолчанию нет, я попытался определите оператор сравнения по умолчанию:

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

bool operator == (const termios& lhs, const termios& rhs) = default;
Но я получаю сообщение об ошибке:

ошибка: по умолчанию 'booloperator==(const termios&, const termios&) ' не является другом 'termios'.

Определение оператора также не работает:

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

auto operator  (const termios& lhs, const termios& rhs) = default;
ошибка: используемый по умолчанию 'autooperator(const termios&, const termios&)' не является другом 'termios'

Ошибка одинакова для GCC 12.2 и clang-14.
Я всегда думал, что мы можем определить операторы сравнения, не являющиеся членами, без необходимость того, чтобы они были друг структуры (в конце концов, структура берется из заголовка C, и все ее члены являются общедоступными).
Есть ли способ сравнения по умолчанию без сравнение элементов по элементам (что сделает сравнение зависимым от членов структуры)?

Подробнее здесь: https://stackoverflow.com/questions/793 ... a-c-struct
Ответить

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

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

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

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

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