如果前向声明导致类型错误不正确,如何避免头文件中的#include? p>
这是我的ray.h
头文件。当我实现前向声明时Vector
变成了一个不完整的类型。在这种情况下,我将不得不在头文件中使用#include? p>
#include "vector.h"
struct Ray {
Vector position, direction; // error: incomplete type when it uses forward declaration
Ray();
Ray(Vector position, Vector direction);
~Ray();
};
答案 0 :(得分:0)
由于Ray
结构的定义方式,使用.cpp
的每个Ray
文件也必须知道Vector
,所以如果你只有一个前向声明ray.h
,在任何#include "vector.h"
之前必须#include "ray.h"
。这很不方便。
因此,如果您只需将#include "vector.h"
添加到ray.h
,对每个人来说都是最简单的。然后,用户可#include "ray.h"
开始使用Ray
,而无需额外#include
。
答案 1 :(得分:0)
实际上,有一种方法可以避免#include
。您可以使用Vector*
(指向Vector
)或std::unique_ptr<Vector>
的指针(实际上相同,但不需要显式分配\解除分配字段)。