Behebung von GCC-Fehler: invalid use of incomplete type 'class ...'
Problem:
Du kompilierst ein C/C++-Programm mit GCC. Du erhältst eine Fehlermeldung ähnlich dieser:
error: invalid use of incomplete type ‘class SomeType’Lösung
Es gibt mehrere mögliche Probleme, aber im Allgemeinen bedeutet dieser Fehler, dass GCC die vollständige Deklaration der angegebenen Klasse oder Struktur nicht finden kann.
Das häufigste Problem ist, dass dir eine #include-Anweisung fehlt. Finde heraus, in welcher Header-Datei sich die Deklaration befindet, d.h. wenn die Fehlermeldung class Map erwähnt, suche nach etwas wie
class Map {
// ...
};Normalerweise befinden sich Klassen in Header-Dateien, die ähnlich wie ihr Name lauten, z.B. könnte MyClass in einer Header-Datei namens MyClass.h, MyClass.hpp oder MyClass.hxx stehen, also suche zuerst nach diesen Dateien. Beachte, dass du auch nach einem Typ aus einer Bibliothek suchen könntest. Oft ist der beste Ansatz, C++ <den fehlenden Typ hier einfügen> zu googeln, um herauszufinden, wo er sich befinden könnte.
Ein weiterer möglicher Grund ist, dass deine #include-Anweisung nach der Zeile steht, in der der Fehler auftritt. Wenn dies der Fall ist, stelle sicher, dass alle erforderlichen Typen eingebunden werden, bevor sie verwendet werden.
Für andere Gründe siehe StackOverflow, z.B. diesen Beitrag