Beim Versuch, Klassen zu nutzen und deren Member-Funktionen kommt es häufig zu der Fehlermeldung „Anfrage nach Member ‚...‘ in ‚...‘, das nicht vom Klassentyp ist“. Um die Ursache zu verstehen, ist es wichtig, den Quellcode zu analysieren, der sie ausgelöst hat.
Im bereitgestellten Beispiel verfügt die Klasse Foo über zwei Konstruktoren: einen, der keine Argumente akzeptiert, und einen anderen, der ein ganzzahliges Argument akzeptiert. Beim Instanziieren von Objekten mithilfe des Konstruktors mit dem Argument verläuft die Ausführung wie erwartet. Die Verwendung des Konstruktors ohne Argumente führt jedoch zu dem oben genannten Fehler.
Der Fehler ist auf eine falsche Syntax zurückzuführen. Um dies zu beheben, sollte das folgende Code-Snippet verwendet werden:
Foo foo2();
Ersetzen Sie den obigen Code durch:
Foo foo2;
Der Compiler interpretiert die Syntax falsch
Foo foo2()
als Deklaration einer Funktion namens „foo2“ mit dem Rückgabetyp „Foo“. Dies ist jedoch nicht die beabsichtigte Funktionalität.
Nach der Korrektur der Syntax kann ein weiterer möglicher Fehler auftreten, nämlich „Aufruf von überladenem ‚Foo()‘ ist mehrdeutig.“ Dies liegt daran, dass der Compiler mehrere überladene Konstruktoren für Foo erkennt. Um dieses Problem zu beheben, geben Sie explizit den zu verwendenden Konstruktor an, wie unten gezeigt:
Foo foo2 = Foo();
Das obige ist der detaillierte Inhalt vonWarum kommt es bei der Verwendung von C-Klassen zu einer „Anfrage nach einem Mitglied ‚...' in ‚...', das nicht vom Klassentyp ist'?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!