In C ++ - Sprache sind Header -Dateien sehr wichtig. Wenn wir einige Schlüsselwörter oder integrierte Methoden von C ++ verwenden, müssen wir ihre jeweiligen Header-Dateien in unseren Code hinzufügen. Um den Fehler besser zu verstehen, werden wir zuerst diskutieren, was Header -Dateien sind und was ihr Zweck ist. Header -Dateien sind oben im Code enthalten.
Header -Dateien sind genau wie importierende Bibliotheken, die wir importieren, um ihre Funktionen zu verwenden. Diese Dateien fungieren manchmal als Klassendateien, die unterschiedliche Funktionen haben. Header -Dateien sind erforderlich, um diese zu verwenden. Wenn wir versuchen, diese Funktionen direkt zu verwenden und die Header -Dateien nicht importieren, erhalten wir diesen Fehler. Dieser Fehler tritt auch auf, wenn der Compiler eine unbekannte Kennung erfasst, die einen bekannten Datentyp hat, aber keine bekannte Definition aufweist. Manchmal tritt dieser Fehler auch auf, wenn Sie eine veraltete IDE oder einen veralteten Compiler verwenden.
Dieser Fehler tritt in verschiedenen Typen auf, die wie folgt sind:
Dies ist keine integrierte Funktion oder Bibliothek. Wir diskutieren eher, dass es sich um einen Fehler handelt und wie wir alle wissen, dass ein Fehler keine bestimmte Syntax hat. Dies ist die Nachricht, die der Compiler zurückgibt, wenn wir unseren Fehler erhalten.
Fehler: Feld 'Eltern' hat unvollständigen Typ 'a'
Beachten Sie, dass in der obigen Fehlermeldung die Schlüsselwörter "übergeordnet" und "a" nicht statisch sind. Sie ändern sich je nach Code immer wieder. Dieses Ding wird verstanden, nachdem wir die Beispiele durchgeführt haben.
Beispiel # 01:
Um unseren Fehler besser zu verstehen, werden wir nun ein Beispiel ausführen, um den Fehler zu erhalten. Danach werden wir den Fehler beheben. Dazu haben wir eine Klasse mit dem Namen „TestClass“ deklariert. In unserer Klasse im Abschnitt Public Access Modifier haben wir ein Objekt unserer Klasse mit dem Namen „Elternteil“ erstellt.
Danach haben wir einen Zeiger unserer Klasse erstellt, der auf den Zeiger des Objekts unserer Klasse hinweist. Wir machen nichts anderes und wir rufen nichts in der Main () -Methode an oder führen eine Operation durch. Dies ist das einfachste Beispiel, das wir versucht haben, um Sie zu verstehen. Jetzt werden wir unseren Code ausführen, um die Ergebnisse zu sehen.
#enthaltenBei der Zusammenstellung unseres Code hat das System den Fehler geworfen und ihn nicht erfolgreich zusammengestellt. Um den Grund für diesen Fehler zu entdecken, schauen wir uns die Fehlermeldung an. Die Fehlermeldung besagt, dass „Feld 'Eltern' unvollständiger Typ 'TestCass' hat“. Dies ist der gleiche Fehler, den wir diskutieren, der ein unvollständiger Typ ist, der nicht zulässig ist. Das System hat diesen Fehler gezeigt, da wir einen unvollständigen Typ haben, den wir inzwischen wissen, ist nicht erlaubt. Jetzt werden wir unseren Fehler beheben.
Um unseren Fehler zu beheben, haben wir nichts mehr getan. Wir haben gerade das Objekt der Testklasse durch ein einfaches Objekt durch einen Zeiger ersetzt. Wir werden jetzt unseren modifizierten Code ausführen, um zu beobachten, wie er funktioniert.
Diesmal wurde unser Code erfolgreich ausgeführt, ohne einen Fehler zu geben. Wir haben keinen Betrieb in unserem Code durchgeführt, daher hat es eine leere Ausgabe. Die Ursache des Fehlers war, dass wir versucht haben, eine Instanz des Objekts einer Klasse zu erstellen, die nicht möglich ist, weil wir sie bereits im Konstruktor verwendet haben. In diesem Fall ruft der Compiler den Code rekursiv auf und wird unendlich, deshalb ist er nicht möglich.
Beispiel # 02:
Wir haben bereits in unserem Einführungsteil besprochen, dass dieser Fehler aus mehreren Gründen verursacht werden kann. Unser Ziel hier ist es, so viele Gründe wie möglich zu diskutieren. Um unser Ziel zu erreichen, haben wir ein weiteres einfaches Beispiel durchgeführt, damit Sie den Fehler verstehen lassen. Um dieses Beispiel auszuführen, haben wir keine Klasse, Struktur oder Funktion oder irgendetwas erstellt. Wir haben einfach Stringsstream angerufen, mit dem wir mit Strings wie Berechnung der Anzahl der Wörter usw. arbeiten können.
#enthaltenDies ist der Fehler, den wir nach der Ausführung unseres Code erhalten, was bedeutet, dass diesmal auch der Code nicht erfolgreich kompiliert wurde. Die Fehlermeldung besagt, dass aggregiertes std :: stringstream „obj“ einen unvollständigen Typ hat und nicht definiert werden kann. Hier unterscheidet sich die Fehlermeldung also geringfügig vom vorherigen. Aber der Punkt hier ist der gleiche: Es ist ein „unvollständiger Typ“. Aber warum ist dieses Problem diesmal aufgetreten, als wir keine Klasse genutzt haben? Wir werden versuchen, den Fehler zu beseitigen, und dadurch werden wir auch den Grund für sein Auftreten herausfinden.
Wir haben früher besprochen, dass dieser Fehler auch auftritt, wenn die Header -Datei in unserem Code fehlt. Wir werden also eine Header -Datei hinzufügen, die "Sstream" ist und sehen, was passiert. Lassen Sie uns unseren Code ausführen.
Diesmal wird der Code erfolgreich ausgeführt. Der Grund für den Fehler war, dass wir die Stringsstream -Funktion verwendeten, aber wir haben seine Bibliothek im Abschnitt Header -Dateien nicht hinzugefügt. Nach dem Hinzufügen seiner Header -Datei wurde der Code erfolgreich ausgeführt.
Abschluss
In diesem Handbuch haben wir einen Fehler besprochen, der während der Codierung in C ++ - Sprache auftritt: Dieser Fehler ist "unvollständiger Typ". Wir haben die Ursache des Fehlers und die Möglichkeiten zur Beseitigung dieses Fehlers besprochen. Wir haben auch Beispiele durchgeführt, um verschiedene Szenarien zu bearbeiten, damit Sie den Fehler verstehen. Endlich werden wir den gesamten Artikel zusammenfassen, indem wir sagen, dass Sie ein paar Dinge sicherstellen müssen, um solche Fehler zu vermeiden. Diese wenigen Dinge sind, dass wir prüfen müssen, ob wir alle erforderlichen Header -Dateien in unseren Code aufgenommen haben oder nicht. Überprüfen Sie, ob die Datentypen der Objekte korrekt sind oder nicht. In den meisten Fällen verwenden wir einfache Objekte, aber unser Code erfordert die Verwendung von Zeigern. Wenn wir eine Vorwärtsdeklaration einer Struktur oder Klasse in unserem Code durchführen, müssen wir überprüfen, ob die Definition dieser Klasse oder Struktur in unserem Code verfügbar ist oder nicht.