Ist es möglich, einen Standardvergleichsoperator für eine C-Struktur zu definieren?C++

Programme in C++. Entwicklerforum
Guest
 Ist es möglich, einen Standardvergleichsoperator für eine C-Struktur zu definieren?

Post by Guest »

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)

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post