Niekompletny typ jest niedozwolony: stringstream


109

Dlaczego ten wiersz zawiera błąd Error: incomplete type is not allowed?

stringstream ss;

Jakie pliki nagłówkowe dołączyłeś?
Alan Stokes

Zgaduję, że był #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>
pighead10

Odpowiedzi:


210

#include <sstream> i użyj w pełni kwalifikowanej nazwy, tj std::stringstream ss;


Błąd jest prawdopodobnie spowodowany tym, że stringstream został zdefiniowany jako ogólny typ czegoś niezdefiniowanego.
mireazma

Myślę, że Visual Studio czasami pozwala na użycie stringstreamu bez dołączania pliku. Może to jest przyczyną błędu
FindOutIslamNow

40

Niektóre nagłówki systemowe zawierają deklarację do przodu std::stringstreambez definicji. To sprawia, że ​​jest to „typ niepełny”. Aby to naprawić, musisz dołączyć definicję, która jest podana w <sstream>nagłówku:

#include <sstream>

17

incomplete typeBłąd jest, gdy kompilator napotka użycie identyfikatora że wie to typ, na przykład dlatego, że widział naprzód-deklarację nim (np class 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 stringstreamklasa, użyj standardu językowego lub innej dokumentacji referencyjnej dla klasy lub poszczególnych funkcji (np. manStrony uniksowe , biblioteka MSDN itp.), Aby dowiedzieć się, czego potrzebujesz, aby #includez 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ęć (np man -k stringstream.).

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.