Warum gibt diese Zeile den Fehler aus Error: incomplete type is not allowed
?
stringstream ss;
c++
types
stringstream
pighead10
quelle
quelle
#include<stringstream>
oder etwas, das ich hätte verwenden sollen? #include <iostream> #include <cstdio> #include <cmath> #include <cstring> #include <string> #include <fstream> #include <cstdlib> #include <vector>Antworten:
#include <sstream>
und verwenden Sie den vollständig qualifizierten Namen, dhstd::stringstream ss;
quelle
Einige der Systemheader enthalten eine Vorwärtsdeklaration
std::stringstream
ohne Definition. Dies macht es zu einem "unvollständigen Typ". Um dies zu beheben, müssen Sie die Definition einfügen, die in der<sstream>
Kopfzeile enthalten ist:quelle
Ein
incomplete type
Fehler liegt vor, wenn der Compiler auf die Verwendung eines Bezeichners stößt, von dem er weiß, dass er ein Typ ist, beispielsweise weil er eine Vorwärtsdeklaration davon gesehen hat (z. B.class stringstream;
), aber keine vollständige Definition dafür gesehen hat (class stringstream { ... };
).Dies kann für einen Typ passieren, den Sie nicht in Ihrem eigenen Code verwendet haben, der jedoch nur über enthaltene Header-Dateien vorhanden ist - wenn Sie Header-Dateien eingefügt haben, die den Typ verwenden, nicht jedoch die Header-Datei, in der der Typ definiert ist. Es ist ungewöhnlich, dass ein Header nicht alle benötigten Header enthält, aber nicht unmöglich.
stringstream
Verwenden Sie für Dinge aus der Standardbibliothek, wie z. B. die Klasse, den Sprachstandard oder eine andere Referenzdokumentation für die Klasse oder die einzelnen Funktionen (z. B. Unix-man
Seiten, MSDN-Bibliothek usw.), um herauszufinden, was Sie für#include
die Verwendung benötigen und was Namespace, um es zu finden, falls vorhanden. Möglicherweise müssen Sie nach Seiten suchen, auf denen der Klassenname angezeigt wird (zman -k stringstream
. B. ).quelle