我在名为Vector3
的头文件中有一个名为Vector.h
的类。一切都很好,直到我将此文件包含在另一个头文件中。然后,IntelliSense会将使用Vector3
(作为参数或返回值)的每个函数标记为错误:Error: "Variable Vector3"" is not a type name
。我无法解释为什么会发生这种情况。我创建了一个新的测试项目并再次包含Vector.h
,但在这个新项目中,一切都编译得很好。这是文件的代码:
#ifndef VECTOR_H_
#define VECTOR_H_
#include <math.h>
class Vector3
{
public:
double x, y, z;
Vector3();
Vector3(double x, double y, double z);
void normalize();
};
Vector3 normalize(Vector3 v);
Vector3 cross(Vector3 a, Vector3 b);
Vector3 min(Vector3 a, Vector3 b);
Vector3 max(Vector3 a, Vector3 b);
#endif
我意识到如果我在Vector.h之前包含windows.h,那么只有一个错误。如果我不包含windows.h或者如果我在vector.h之后包含它,我就不会收到任何错误。