如何修复 GCC 错误:invalid use of incomplete type 'class ...'

问题:

你正在使用 GCC 编译 C/C++ 程序。你收到类似这样的错误消息:

gcc_incomplete_type.txt
error: invalid use of incomplete type ‘class SomeType’

解决方案

可能有多种问题,但通常此错误意味着 GCC 找不到给定类或结构体的完整声明。

最常见的问题是你缺少 #include 子句。找出声明位于哪个头文件中,即如果错误消息提到 class Map,查找类似这样的内容

class_declaration_example.cpp
class Map {
   // ...
};

通常类位于与其名称类似的头文件中,例如 MyClass 可能位于名为 MyClass.hMyClass.hppMyClass.hxx 的头文件中,所以一定要先查找这些文件。注意你也可能在查找库中的类型。通常最好的方法是 google C++ <在此插入缺失类型> 来找出它可能位于何处。

另一个可能的原因是你的 #include 子句在错误发生的行之后。如果是这种情况,确保所有所需类型在使用之前被包含。

对于其他原因,请参见 StackOverflow,例如此帖子


Check out similar posts by category: C/C++, GCC Errors