Недопустимый тип недопустим: stringstream

Почему эта строка дает ошибку Error: incomplete type is not allowed?

stringstream ss;

Ответ 1

#include <sstream> и используйте полное имя, т.е. std::stringstream ss;

Ответ 2

Пожалуйста, добавьте:

#include <sstream>

Ответ 3

Ошибка incomplete type возникает, когда компилятор знает, что идентификатор является типом, например, потому что у вас есть предварительное объявление этого (например, class stringstream;), но он не видел его полного определения (class stringstream { ... };).

Это может произойти для типа, который присутствует только через включенные заголовочные файлы - когда вы включили заголовочные файлы, которые используют тип, но не заголовочный файл, в котором определен тип. Для заголовка необычно не включать все необходимые заголовки, но не невозможно.

Для вещей из стандартной библиотеки, таких как класс stringstream, используйте справочную документацию (например, страницы Unix man, библиотека MSDN и т.д.), Чтобы выяснить, что вам нужно #include, чтобы использовать его и какое пространство имен для найти его, если таковые имеются. Возможно, вам придется искать страницы, где появляется имя класса (например, man -k stringstream).