Heim > Backend-Entwicklung > C++ > Hauptteil

Warum wirft mein C-Code einen „Fehler: Anforderung für Mitglied ‚function1' in ‚myObj', das vom Nicht-Klassentyp ‚MyClass ()()' ist' aus?

Mary-Kate Olsen
Freigeben: 2024-11-12 12:12:02
Original
360 Leute haben es durchsucht

Why Does My C   Code Throw an

Konfusion behoben: Den Fehler „Konstruktor ohne Argumente“ verstehen

Ihre Begegnung mit der Fehlermeldung „Fehler: Anfrage für Mitglied „function1“ in „myObj“, das vom Nicht-Klassentyp „MyClass ()()“ ist, während Sie Ihren C-Code kompiliert haben, hat Sie möglicherweise verwirrt. Lassen Sie uns die Verwirrung rund um diesen Fehler klären.

Das Problem ergibt sich aus der mehrdeutigen Syntax einer leeren Konstruktordeklaration mit Klammern. Es mag zwar den Anschein haben, dass die folgende Syntax ein Objekt ohne Argumente definiert:

MyClass myObj();
Nach dem Login kopieren

Der Sprachstandard schreibt vor, dass eine solche Syntax tatsächlich als Funktionsdeklaration interpretiert wird. Um diese Mehrdeutigkeit zu vermeiden, lautet die korrekte Syntax zum Deklarieren eines Konstruktors ohne Argumente:

MyClass myObj;
Nach dem Login kopieren
Nach dem Login kopieren

Diese alternative Syntax bezeichnet explizit eine Objektdefinition, löst die Mehrdeutigkeit auf und ermöglicht dem Compiler den korrekten Zugriff auf die Mitgliedsfunktion function1( ).

Es handelt sich nicht um eine Einschränkung des Compilers, sondern vielmehr um eine strikte Einhaltung des C-Sprachstandards. Der Standard legt klar fest, dass eine Funktionsdeklaration immer Vorrang vor einer Objektdefinition hat, wenn die Syntax nicht eindeutig ist.

Um solche Fehler zu vermeiden, stellen Sie daher sicher, dass Sie immer die Standardsyntax für die Deklaration von Konstruktoren ohne Argumente verwenden:

MyClass myObj;
Nach dem Login kopieren
Nach dem Login kopieren

Das obige ist der detaillierte Inhalt vonWarum wirft mein C-Code einen „Fehler: Anforderung für Mitglied ‚function1' in ‚myObj', das vom Nicht-Klassentyp ‚MyClass ()()' ist' aus?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage