运行代码时出现奇怪的 C2535 错误。它由三个主要类组成(总结如下)。它们之间存在一些循环依赖关系,但它们前面有#pragma once
宏,不应多次创建。错误发生在行上:
CVertex(POINT3D p) : nx(0), ny(0), nz(0), nw(0) {
CVertex(p.x, p.y, 0, 1);
它说:
错误 C2535: CVertex::CVertex(void) : 成员函数已定义或声明
这没有意义。它应该只被宣布一次,因为我正在使用#pragma once
警卫!我也尝试过使用ifndef
警卫,这没有任何区别。
这是代码的摘要(重要部分)
//structs.h
#pragma once
#include matrices.h
typedef struct {
LONG x;
LONG y;
LONG z;
} POINT3D;
typedef struct{
....
Matrix4x4 matrixFour;
...
} DeviceStructure;
这是我的第二个文件:
//matrices.h
#pragma once
#include structs.h
class CVertex {
public:
CVertex(POINT3D x, POINT3D y, POINT3D z) ..... ;
CVertex(POINT3D p) : nx(0), ny(0), nz(0), nw(0) {
CVertex(p.x, p.y, 0, 1);
}
....
}
我的第三个文件:
//world.h
#pragma once
#include structs.h
#include matrices.h
.....
(uses stuff from the previous classes)
....