如何避免在转发声明导致不完整类型错误时在头文件中 #include
How to avoid #include in header files when forward declaration causes incomplete type error?
当前向声明导致不完整类型错误时,如何避免头文件中 #include?
这是我ray.h
头文件。当我实现前向声明时Vector
变成不完整的类型。在这种情况下,我将不得不在头文件中使用 #include?
#include "vector.h"
struct Ray {
Vector position, direction; // error: incomplete type when it uses forward declaration
Ray();
Ray(Vector position, Vector direction);
~Ray();
};
由于结构Ray
定义的方式,每个使用Ray
的.cpp
文件也必须知道Vector
,所以如果你在ray.h
中只有一个前向声明,它必须在任何#include "ray.h"
之前#include "vector.h"
。这很不方便。
因此,如果您只是将#include "vector.h"
添加到ray.h
,则对每个人来说都是最简单的。然后,人们可以#include "ray.h"
并开始使用Ray
,而无需额外的#include
。
实际上,有一种方法可以避免#include
。您可以使用Vector*
(指向Vector
的指针(或std::unique_ptr<Vector>
(实际上相同,但不需要显式分配\解除分配字段(。
相关文章:
- 我的模板类方法返回错误类型?
- 错误:类型"double()"和"double()"的操作数无效到二进制&quo
- 类型为 "int*" 的参数与 C++ 中错误类型"int**"参数不兼容
- glDrawElements GL 错误类型 = 0x824c,严重性 = 0x9146,消息 = GL_INVALID
- Eclipse/CDT_C++给出"语义错误_"类型XXX无法解决"。项目运行
- turbo 为什么我的C++代码中出现错误类型名称预期"错误?
- "auto"推断出 hashtable_policy.h 中的错误类型
- 设计自己的结果/两者之一:是否应该始终指定成功类型和错误类型
- 如何修复"ctypes"。参数错误:参数 2:<键入"异常.类型错误">:RaspberryPi 中的错误类型"错误
- 在 vscode 上编译错误.类型说明符是 C++11 扩展
- 不允许使用错误类型
- 当读取错误类型时,CIN覆盖我的初始化值
- C++:"错误:类型'const char*'和'const char [28]'的操作数无效到二进制'ope
- 我的代码错误类型警告 1 警告 C4018 和更多错误
- 在shared_from_this()中的错误类型(在继承类中)(是否有dyn.type-ware shared Poi
- 为什么缩小转换范围不能防止错误类型的map.insert()失败
- 程序总是返回二进制'>>':找不到运算符,它采用错误类型的左操作数
- 错误:类型为 '.&' 来自类型的临时 '..*康斯特'
- 涉及将要馈送的向量转换为execvp的错误类型
- C++中是否存在错误类型