谁能告诉我 C++ 编译器何时抛出“不完整类型错误”?
注意:我故意让这个问题有点开放式,以便我可以自己调试我的代码。
原文由 Nickal 发布,翻译遵循 CC BY-SA 4.0 许可协议
谁能告诉我 C++ 编译器何时抛出“不完整类型错误”?
注意:我故意让这个问题有点开放式,以便我可以自己调试我的代码。
原文由 Nickal 发布,翻译遵循 CC BY-SA 4.0 许可协议
3 回答1.3k 阅读✓ 已解决
1 回答1k 阅读✓ 已解决
4 回答832 阅读
1 回答907 阅读
1 回答940 阅读
1 回答707 阅读
1 回答809 阅读
这通常发生在编译器看到前向声明但没有该类型的完整定义时,而该类型正在某处使用。例如:
第二行将导致编译器错误,并且根据编译器的不同,将报告不完整的类型(其他编译器会给您不同的错误,但含义相同)。
但是,当您只使用指向此类前向声明的指针时,不会出现任何抱怨,因为指向类的指针的大小始终是已知的。像这样:
如果您在出现此错误时询问具体应用程序或库中可能出现的问题:这通常发生在包含包含前向声明但尚未找到完整定义的标头时。解决方案非常明显:还包括允许您访问完整类型的标题。有时您也可能只是没有用于类型的名称空间或使用了错误的名称空间,而是需要更正它。