C++ C++;收割台护罩不工作

C++ C++;收割台护罩不工作,c++,header,include,guard,C++,Header,Include,Guard,我试图让我的包工作,但我尝试的每件事都会导致错误。即使只使用一次#pragma也行不通。你知道我做错了什么吗 main.cpp #include "utility/headers/Window.h" #include "engine/headers/Player.h" #include "engine/headers/Chunk.h" #include "ChunkManager.h" ChunkManager.h #ifndef CHUNK_MANAGER_H #define CHUNK_

我试图让我的包工作,但我尝试的每件事都会导致错误。即使只使用一次#pragma也行不通。你知道我做错了什么吗

main.cpp

#include "utility/headers/Window.h"
#include "engine/headers/Player.h"
#include "engine/headers/Chunk.h"
#include "ChunkManager.h"
ChunkManager.h

#ifndef CHUNK_MANAGER_H
#define CHUNK_MANAGER_H

#include "../../utility/headers/Vector3i.h"
#include "Chunk.h"
#include <map>
class ChunkManager{...}
#endif // CHUNK_MANAGER_H
#pragma once
#ifndef CHUNK_H
#define CHUNK_H

#include <glm/glm.hpp>
#include "CubeCreator.h"
#include "ChunkManager.h"
#include "../../utility/headers/Random.h"
#include "../../utility/noise/headers/Noise.h"

class Chunk{...}
#endif // CHUNK_H
#include "Chunk.h"
// no includes
\ifndef CHUNK\u MANAGER\u H
#定义区块管理器
#包括“./../utility/headers/Vector3i.h”
#包括“Chunk.h”
#包括
类块管理器{…}
#endif//CHUNK\u MANAGER\u H
Chunk.h

#ifndef CHUNK_MANAGER_H
#define CHUNK_MANAGER_H

#include "../../utility/headers/Vector3i.h"
#include "Chunk.h"
#include <map>
class ChunkManager{...}
#endif // CHUNK_MANAGER_H
#pragma once
#ifndef CHUNK_H
#define CHUNK_H

#include <glm/glm.hpp>
#include "CubeCreator.h"
#include "ChunkManager.h"
#include "../../utility/headers/Random.h"
#include "../../utility/noise/headers/Noise.h"

class Chunk{...}
#endif // CHUNK_H
#include "Chunk.h"
// no includes
#pragma一次
#ifndef CHUNK_H
#定义块
#包括
#包括“CubeCreator.h”
#包括“ChunkManager.h”
#包括“../../utility/headers/Random.h”
#包括“../../utility/noise/headers/noise.h”
类块{…}
#endif//CHUNK_H

错误消息是尚未声明“ChunkManager”

提前谢谢

类ChunkManager替换
#包括“ChunkManager.h”

这就是所谓的前向声明,它解决了诸如类A需要了解类B和类B需要了解类A之类的问题


取决于您在类
Chunk
中使用
ChunkManager
的方式。转发声明可能不起作用。

因为在我的例子中没有提到的技术起作用,所以我定义了一个新的头文件,其中包含诸如chunkSize之类的全局变量。也许这是不可能做到的我已经尝试了

然而,对于那些可能会发现这个问题的人来说,我的导入现在看起来是这样的:

ChunkManager.h

#ifndef CHUNK_MANAGER_H
#define CHUNK_MANAGER_H

#include "../../utility/headers/Vector3i.h"
#include "Chunk.h"
#include <map>
class ChunkManager{...}
#endif // CHUNK_MANAGER_H
#pragma once
#ifndef CHUNK_H
#define CHUNK_H

#include <glm/glm.hpp>
#include "CubeCreator.h"
#include "ChunkManager.h"
#include "../../utility/headers/Random.h"
#include "../../utility/noise/headers/Noise.h"

class Chunk{...}
#endif // CHUNK_H
#include "Chunk.h"
// no includes
Chunk.h

#ifndef CHUNK_MANAGER_H
#define CHUNK_MANAGER_H

#include "../../utility/headers/Vector3i.h"
#include "Chunk.h"
#include <map>
class ChunkManager{...}
#endif // CHUNK_MANAGER_H
#pragma once
#ifndef CHUNK_H
#define CHUNK_H

#include <glm/glm.hpp>
#include "CubeCreator.h"
#include "ChunkManager.h"
#include "../../utility/headers/Random.h"
#include "../../utility/noise/headers/Noise.h"

class Chunk{...}
#endif // CHUNK_H
#include "Chunk.h"
// no includes
main.cpp

#include "utility/headers/Window.h"
#include "engine/headers/Player.h"
#include "engine/headers/Chunk.h"
#include "ChunkManager.h"

对chunkSize的访问不再通过调用ChunkManager::chunkSize来完成,而是通过调用Settings::chunkSize

来完成,同时还缺少分号(即
类X{…};
)“ChunkManager”还没有被声明,这看起来并不是问题所在。拜托,还有什么?我不知道怎么了!为什么您同时需要
#pragma once
和显式hashguard?谢谢您的回答!这可能是解决方案,但不幸的是,我需要有关块中常量静态变量的信息。h:private:int data[ChunkManager::chunkSize][ChunkManager::chunkSize][ChunkManager::chunkSize];也许另一种方法也行(即在ChunkManager.h中向前声明类Chunk)。如果这也不起作用,请提供一个如前所述的解决方案。