gpt4 book ai didi

c++ - 类指针与引用

转载 作者:行者123 更新时间:2023-11-28 07:21:37 25 4
gpt4 key购买 nike

<分区>

我了解指针和引用的基础知识,但我遇到的最大问题是决定何时使用它们(以及使用哪些)。我将给出的主要示例是一个基本游戏。假设设置类似于:

  • 新世界
    • 相机
    • map

World 是一个指针,因为每次游戏开始新的保存或加载现有的保存时,它都会删除 world 并加载一个新的。但是在世界内部,Camera 和 Map 应该只存在一个,并且只在 World 的持续时间内存在。如果世界被摧毁,那么显然他们也应该被摧毁。但是..假设 Map 需要访问相机(但其他对象也是如此),Camera 应该通过引用传递到 Map 还是作为指针传递,或者?例如,如果它应该是引用,它应该是:

map = Map(&camera);
(inside map class) Map(Camera camera) {...}

或者更像是:

map = Map(camera);
(inside map class) Map(Camera &camera) {...}

此外,假设 Map 包含一个称为网格的二维图 block vector 。像这样的东西:

std::vector< std::vector< Tile > > > grid;

现在假设我有一个需要传入网格的 PathFinder 类。它需要直接编辑图 block 以更改 f、g 等值(用于寻路)。该 2D vector 是否应该只是 Tile 的普通 2D vector ,并且整个对象都通过引用传递给 PathFinder?或者它应该是 Tile 指针的二维 vector ?

此外,NPC 和玩家将有一个 currentTile,这是他们当前所在的图 block 。他们将需要有一个指向该图 block 的引用或指针,以便他们也可以通过 NPC/Player 类中的类似内容将自己设置为该图 block 上的居住者:

currentTile = tile;
currentTile->SetOccupant(this);

另一个问题是,当我随后销毁该网格以加载新 map 时,我如何轻松处理以确保没有任何内容指向不再存在的 Tiles。我是否只需循环这些类并将 currentTile 设置为 NULL?

这是我开始真正对这些东西感到困惑的地方。感谢任何帮助,因为我显然很笨。 @_@;抱歉,如果这不是真正的游戏主题相关。如果它需要移动到不同的 stackexchange,请告诉我或移动它(如果可以的话)。 >_<

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