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

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

Mary-Kate Olsen
Mary-Kate OlsenOriginal
2024-11-12 12:12:02395Durchsuche

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();

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;

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;

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!

Stellungnahme:
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