この行がエラーError: incomplete type is not allowed
を与えるのはなぜですか?
stringstream ss;
#include <sstream>
および完全修飾名、つまりstd::stringstream ss;
を使用します
追加してください:
#include <sstream>
incomplete type
は、たとえば、前方宣言(class stringstream;
)があるために、識別子が型であることをコンパイラが認識しているが、その完全な定義が表示されていない場合(class stringstream { ... };
)。
これは、タイプが定義されているヘッダーファイルではなく、タイプを使用するヘッダーファイルをインクルードした場合に、インクルードヘッダーファイルを通じてのみ存在するタイプで発生する可能性があります。
stringstream
クラスなどの標準ライブラリからのものについては、参照ドキュメント(Unix man
ページ、MSDNライブラリなど)を使用して、#include
に必要なものを見つけます。使用する場合は、それとどの名前空間を使用して検索します。クラス名が表示されるページを検索する必要がある場合があります(例:man -k stringstream
)。