web-dev-qa-db-ja.com

不完全なタイプは許可されていません:stringstream

この行がエラーError: incomplete type is not allowedを与えるのはなぜですか?

stringstream ss;
89
pighead10

#include <sstream>および完全修飾名、つまりstd::stringstream ss;を使用します

171
Prasoon Saurav

追加してください:

#include <sstream>
31
ybungalobill

incomplete typeは、たとえば、前方宣言(class stringstream;)があるために、識別子が型であることをコンパイラが認識しているが、その完全な定義が表示されていない場合(class stringstream { ... };)。

これは、タイプが定義されているヘッダーファイルではなく、タイプを使用するヘッダーファイルをインクルードした場合に、インクルードヘッダーファイルを通じてのみ存在するタイプで発生する可能性があります。

stringstreamクラスなどの標準ライブラリからのものについては、参照ドキュメント(Unix manページ、MSDNライブラリなど)を使用して、#includeに必要なものを見つけます。使用する場合は、それとどの名前空間を使用して検索します。クラス名が表示されるページを検索する必要がある場合があります(例:man -k stringstream)。

11
rakslice