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);
};