Dlaczego ten wiersz zawiera błąd Error: incomplete type is not allowed
?
stringstream ss;
c++
types
stringstream
pighead10
źródło
źródło
#include<stringstream>
jakiś lub coś, czego powinienem był użyć? #include <iostream> #include <cstdio> #include <cmath> #include <cstring> #include <string> #include <fstream> #include <cstdlib> #include <vector>Odpowiedzi:
#include <sstream>
i użyj w pełni kwalifikowanej nazwy, tjstd::stringstream ss;
źródło
Niektóre nagłówki systemowe zawierają deklarację do przodu
std::stringstream
bez definicji. To sprawia, że jest to „typ niepełny”. Aby to naprawić, musisz dołączyć definicję, która jest podana w<sstream>
nagłówku:źródło
incomplete type
Błąd jest, gdy kompilator napotka użycie identyfikatora że wie to typ, na przykład dlatego, że widział naprzód-deklarację nim (npclass stringstream;
), ale nie widział pełną definicję dla niego (class stringstream { ... };
).Może się to zdarzyć w przypadku typu, którego nie używałeś we własnym kodzie, ale jest obecny tylko w dołączonych plikach nagłówkowych - gdy dołączyłeś pliki nagłówkowe, które używają tego typu, ale nie w pliku nagłówkowym, w którym typ jest zdefiniowany. To niezwykłe, że nagłówek sam nie zawiera wszystkich potrzebnych mu nagłówków, ale nie jest to niemożliwe.
W przypadku rzeczy z biblioteki standardowej, takich jak
stringstream
klasa, użyj standardu językowego lub innej dokumentacji referencyjnej dla klasy lub poszczególnych funkcji (np.man
Strony uniksowe , biblioteka MSDN itp.), Aby dowiedzieć się, czego potrzebujesz, aby#include
z niej skorzystać i czego przestrzeń nazw, aby ją znaleźć, jeśli taka istnieje. Może być konieczne wyszukanie stron, na których pojawia się nazwa zajęć (npman -k stringstream
.).źródło