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