C ++标头防护无法正常工作

时间:2015-07-19 10:17:57

标签: c++ header include guard

我正在尝试让我的包含工作,但我尝试的所有内容都会导致错误。即使使用#pragma一次也行不通。你知道我做错了吗?

的main.cpp

#include "utility/headers/Window.h"
#include "engine/headers/Player.h"
#include "engine/headers/Chunk.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

Chunk.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

错误消息'ChunkManager'尚未声明

提前致谢!

2 个答案:

答案 0 :(得分:2)

<paper-drawer-panel>替换为#include "ChunkManager.h"

这称为前向声明,解决了A类需要了解B类和B类需要了解A类的问题。

取决于您在班级class ChunkManager;中使用ChunkManager的方式。前瞻性声明可能不起作用。

答案 1 :(得分:0)

由于上述技术没有在我的情况下工作,我定义了一个包含全局变量(如chunkSize)的新头文件。也许我不可能做我曾尝试过的事情。

然而,对于那些可能在这里找到这个问题的人来说,我的导入现在看起来如何:

<强> ChunkManager.h

#include "Chunk.h"

<强> Chunk.h

// no includes

<强>的main.cpp

#include "ChunkManager.h"

通过调用ChunkManager :: chunkSize而不是通过调用Settings :: chunkSize

来完成对chunkSize的访问