Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/visual-studio-2012/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 包含另一个对象并将自身传递给它的对象(C+;+;)_C++_C++11 - Fatal编程技术网

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

C++ 包含另一个对象并将自身传递给它的对象(C+;+;),c++,c++11,C++,C++11,我有一个我没有预料到的问题,所以我不能用另一种方式做我想做的事情,因为它会影响项目结构,我花了很多时间试图解决它 我有一个阶级世界和阶级区块。有一个班级世界的例子 在这个类中,我有std::vector块,所以它必须包括Chunk.h 在类Chunk中,我有一个函数Generate(),它必须获取World&World,因为它必须从其他Chunk中获取变量,从World类中获取纹理并使用方法,所以Chunk必须包含World.h 世界正在通过这个传递给Generate()这样的功能 两个类都有一

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

我有一个阶级世界和阶级区块。有一个班级世界的例子

在这个类中,我有
std::vector
块,所以它必须包括Chunk.h

在类Chunk中,我有一个函数
Generate()
,它必须获取
World&World
,因为它必须从其他Chunk中获取变量,从World类中获取纹理并使用方法,所以Chunk必须包含World.h

世界正在通过
这个
传递给
Generate()
这样的功能

两个类都有一次
#pragma

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


谢谢你的帮助

如tobi303所述,应避免这些循环依赖关系

如果您仍要这样做,转发声明将帮助您:

世界卫生组织


您可以使用转发声明,但是从一开始就最好避免这种相互依赖。您的描述对于不熟悉您的代码库的人来说相当模糊。谢谢!我添加了
类世界,反之亦然,你应该用这些声明写一个单独的头,包括它们,而不是写新的声明。谢谢,在JS(ES6)中,我做了这样的结构,但是没有任何问题。C++中没有太多的问题,它实际上优于那些,但是它需要正确的公式化。查找“奇怪的重复模板模式”作为重复定义和惊奇漫画的示例。
#pragma once

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

class World
{
  // methods

private:
  std::vector<Chunk> _chunks;
};
#pragma once

class World;

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