为什么这一行会给出错误 Error: incomplete type is not allowed
?
stringstream ss;
#include<stringstream>
或我应该使用的东西? #include <iostream> #include <cstdio> #include <cmath> #include <cstring> #include <字符串> #include <fstream> #include <cstdlib> #include <向量>
#include <sstream>
并使用完全限定名称,即 std::stringstream ss;
某些系统标头提供了 std::stringstream
的前向声明,但没有定义。这使其成为“不完整类型”。要解决此问题,您需要包含 <sstream>
标头中提供的定义:
#include <sstream>
incomplete type
错误是当编译器遇到使用它知道是类型的标识符时,例如因为它看到了它的前向声明(例如 class stringstream;
),但它没有看到完整的定义为它 (class stringstream { ... };
)。
这可能发生在您没有在自己的代码中使用但仅通过包含的头文件出现的类型 - 当您包含使用该类型的头文件,而不是定义该类型的头文件时。标头本身不包含它需要的所有标头是不寻常的,但并非不可能。
对于标准库中的内容,例如 stringstream
类,请使用该类或单个函数(例如 Unix man
页面、MSDN 库等)的语言标准或其他参考文档来确定您需要什么到 #include
以使用它以及在哪个命名空间中找到它(如果有)。您可能需要搜索出现类名的页面(例如 man -k stringstream
)。
不定期副业成功案例分享