Ich möchte eine C-Struktur (Termios) in meinem C++20-Programm verwenden, aber ich möchte zwei Termios-Instanzen vergleichen können.
Da es keinen Standardvergleich gibt, habe ich versucht, einen Standard zu definieren Vergleichsoperator:
Code: Select all
bool operator == (const termios& lhs, const termios& rhs) = default;
Aber ich erhalte eine Fehlermeldung:
Code: Select all
error: defaulted ‘bool operator==(const termios&, const termios&)’ is not a friend of ‘termios’
Operator definieren funktioniert auch nicht:
Code: Select all
auto operator (const termios& lhs, const termios& rhs) = default;
->
Code: Select all
error: defaulted ‘auto operator(const termios&, const termios&)’ is not a friend of ‘termios’
Der Fehler ist derselbe für GCC 12.2 und clang-14
Ich dachte immer, dass wir Vergleichsoperatoren definieren können, die keine Mitglieder sind, ohne dass dies erforderlich ist Sie müssen mit der Struktur befreundet sein (schließlich stammt die Struktur aus einem C-Header und alle ihre Mitglieder sind öffentlich).
Gibt es eine Möglichkeit zum Standardvergleich, ohne Mitglied für Mitglied zu vergleichen? (wodurch der Vergleich von der Struktur abhängig wird Mitglieder)
Ich möchte eine C-Struktur (Termios) in meinem C++20-Programm verwenden, aber ich möchte zwei Termios-Instanzen vergleichen können.
Da es keinen Standardvergleich gibt, habe ich versucht, einen Standard zu definieren Vergleichsoperator:
[code]bool operator == (const termios& lhs, const termios& rhs) = default;
[/code]
Aber ich erhalte eine Fehlermeldung:
[code]error: defaulted ‘bool operator==(const termios&, const termios&)’ is not a friend of ‘termios’
[/code]
Operator definieren funktioniert auch nicht:
[code]auto operator (const termios& lhs, const termios& rhs) = default;
[/code]
->
[code]error: defaulted ‘auto operator(const termios&, const termios&)’ is not a friend of ‘termios’
[/code]
Der Fehler ist derselbe für GCC 12.2 und clang-14
Ich dachte immer, dass wir Vergleichsoperatoren definieren können, die keine Mitglieder sind, ohne dass dies erforderlich ist Sie müssen mit der Struktur befreundet sein (schließlich stammt die Struktur aus einem C-Header und alle ihre Mitglieder sind öffentlich).
Gibt es eine Möglichkeit zum Standardvergleich, ohne Mitglied für Mitglied zu vergleichen? (wodurch der Vergleich von der Struktur abhängig wird Mitglieder)