gpt4 book ai didi

c++ - 即使我一次使用编译指示,也会出现C++错误C2535

转载 作者:行者123 更新时间:2023-12-02 11:09:28 25 4
gpt4 key购买 nike

运行代码时出现奇怪的C2535错误。
它由三个主要类组成(概述如下)。它们之间有一些循环依赖关系,但是它们之前是#pragma once宏,因此不应创建多次。
错误发生在行上:

CVertex(POINT3D p) : nx(0), ny(0), nz(0), nw(0) {
CVertex(p.x, p.y, 0, 1);

它说:

error C2535: CVertex::CVertex(void) : member function already defined or declared



这没有道理。 ,因为我正在使用#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)
....

最佳答案

通过将structs.h文件拆分为单独的文件来解决该问题:Point3DStruct.hDeviceStructure.h

现在需要在structs.hmatrices.h之间具有循环依赖关系。

关于c++ - 即使我一次使用编译指示,也会出现C++错误C2535,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21511589/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com