Heim > Backend-Entwicklung > C++ > Warum kommt es bei der Verwendung von C-Klassen zu einer „Anfrage nach einem Mitglied ‚...' in ‚...', das nicht vom Klassentyp ist'?

Warum kommt es bei der Verwendung von C-Klassen zu einer „Anfrage nach einem Mitglied ‚...' in ‚...', das nicht vom Klassentyp ist'?

Linda Hamilton
Freigeben: 2024-11-30 20:19:11
Original
820 Leute haben es durchsucht

Why Does

Verstehen des Fehlers: „Anfrage für Mitglied ‚...‘ in ‚...‘, das vom Nicht-Klassen-Typ ist“

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.

Behebung des Problems

Der Fehler ist auf eine falsche Syntax zurückzuführen. Um dies zu beheben, sollte das folgende Code-Snippet verwendet werden:

Foo foo2();
Nach dem Login kopieren

Ersetzen Sie den obigen Code durch:

Foo foo2;
Nach dem Login kopieren

Der Compiler interpretiert die Syntax falsch

Foo foo2()
Nach dem Login kopieren

als Deklaration einer Funktion namens „foo2“ mit dem Rückgabetyp „Foo“. Dies ist jedoch nicht die beabsichtigte Funktionalität.

Mehrdeutigkeit vermeiden

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();
Nach dem Login kopieren

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!

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