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?
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!