【发布时间】:2011-12-01 22:01:50
【问题描述】:
我确定以前有人问过这个问题,但我似乎找不到。
我有两个班级,Vector 和 Point。
文件是这样的(有点重复):
vector.h:
#include <math.h>
#include <stdlib.h>
class Vector {
friend class Point;
public:
...
Vector(Point); // Line 16
vector.cpp:
#include <math.h>
#include <stdlib.h>
#include "vector.h"
...
Vector::Vector(Point point) { // Line 29
x = point.x;
y = point.y;
z = point.z;
}
point.cpp 和 point.h 看起来基本相同,只是在定义中将 vector 替换为 point。
我将它们包括在内:
#include "structures/vector.cpp"
#include "structures/point.cpp"
当我编译时,我得到这个错误:
structures/vector.h:16:17: error: field ‘Point’ has incomplete type
structures/vector.cpp:29:15: error: expected constructor, destructor, or type conversion before ‘(’ token
我认为这个错误是说 Point 还没有被声明,但是当我通过导入 point.cpp 在 vector.h 内声明它时,我得到了一个 巨大 一堆错误.
谁能解释一下这个问题?
谢谢!
应用@ildjarn 的建议后,这些错误消失了,我只剩下一个:
structures/vector.h:16:18: error: expected ‘)’ before ‘const’
还有一行:
Vector(Point const);
我在.cpp 文件中这样定义它:
Vector::Vector(Point const &point) {
【问题讨论】:
-
C++ cyclic inclusion issue 的可能重复项
标签: c++ class import compiler-errors