Неполный тип не допускается: stringstream - PullRequest
89 голосов
/ 25 апреля 2011

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

stringstream ss;

Ответы [ 3 ]

166 голосов
/ 25 апреля 2011

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

30 голосов
/ 25 апреля 2011

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

#include <sstream>
10 голосов
/ 08 февраля 2016

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

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

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

...