gpt4 book ai didi

c++ - 通过组合访问父类

转载 作者:行者123 更新时间:2023-11-28 04:55:58 25 4
gpt4 key购买 nike

在我的程序中,我有一个非常简单的结构来表示 RPG 游戏中的 map 。我有一个 Map 类,带有一个二维数组“Grid”,由 Area 对象组成,如下所示:

 #pragma once
#include "Area.h"

class Map
{
public:
Map();
~Map();

Area Grid[10][10];
};

然后在 Map 构造函数中:

 Map::Map()
{
for (int y = 0; y < 10; y++) {
for (int x = 0; x < 10; x++) {
Grid[x][y] = Area();
}
}
}

我希望 Area 对象能够从 Map 对象访问某些值,并且我读到我可以在构造 area 对象时包含对 map 类的引用,以便它可以返回到它的 parent 。但是要做到这一点,我必须 #include "Map.h"在 Area.h 中,这将创建一个包含循环,并且通常不是很好。那么我将如何在每个区域对象中注入(inject)对该区域父项的引用呢?提前感谢您的帮助。

最佳答案

// Area.h
#pragma once
struct Map;

struct Area {
Map* map = nullptr;
Area() {}
explicit Area( Map* m) : map(m) {}
};

请注意,您可能希望在 Area.cpp(包括 Map.h)中定义 Area 的某些功能。为了示例代码的简单性,我只是将其省略。

// Map.h
#pragma once
#include "Area.h"

struct Map
{
Map();
~Map();

Area Grid[10][10];
};

// Map.cpp
#include "Map.h"

Map::Map()
{
for (int y = 0; y < 10; y++) {
for (int x = 0; x < 10; x++) {
Grid[x][y] = Area(this);
}
}
}

Map::~Map() {}

// main.cpp
#include "Map.h"
int main()
{
Map m;
return 0;
}

关于c++ - 通过组合访问父类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47127298/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com