包含另一个对象的对象,并将其自身传递给它(C ++)

时间:2017-12-12 17:10:46

标签: c++ c++11

我有一个我没想到的问题,所以我不能以另一种方式做我想要的事情,因为它会影响项目结构,我花了很多时间来解决它。

我有一个班级世界和一个班级大块。世界上有一个实例。

在这个课程中,我有std::vector个Chunks,所以它必须包含Chunk.h。

在类Chunk中我有函数Generate()必须得到World & world,因为它必须从其他块获取变量,获取纹理并使用World类中的方法,因此Chunks必须包含World.h。< / p>

世界正在将this传递给像Generate()这样的功能。

这两个班级都有#pragma once

它根本不起作用,我不知道为什么。 “世界”是语法错误。

感谢您的帮助!

1 个答案:

答案 0 :(得分:2)

正如提到的tobi303,应该避免这些循环依赖。

无论如何你想要这样做,前方声明会让你:

world.h

#pragma once

#include <vector>
#include "chunk.h"

class World
{
  // methods

private:
  std::vector<Chunk> _chunks;
};

chunk.h

#pragma once

class World;

class Chunk
{
public:
  void Generate(World& world);
};