Um incomplete type
erro é quando o compilador encontra o uso de um identificador que ele sabe que é um tipo, por exemplo, porque viu uma declaração antecipada dele (por exemplo class stringstream;
), mas não viu uma definição completa para ele ( class stringstream { ... };
).
Isso pode acontecer para um tipo que você não usou em seu próprio código, mas só está presente por meio de arquivos de cabeçalho incluídos - quando você incluiu arquivos de cabeçalho que usam o tipo, mas não o arquivo de cabeçalho onde o tipo é definido. É incomum que um cabeçalho não inclua todos os cabeçalhos de que precisa, mas não é impossível.
Para coisas da biblioteca padrão, como a stringstream
classe, use o padrão de linguagem ou outra documentação de referência para a classe ou as funções individuais (por exemplo man
, páginas Unix , biblioteca MSDN, etc.) para descobrir o que você precisa #include
para usá-lo e o que namespace para encontrá-lo, se houver. Você pode precisar pesquisar por páginas onde o nome da classe aparece (por exemplo man -k stringstream
).