指针指向NULL向量

Pointer points to NULL in vector

本文关键字:向量 NULL 指针      更新时间:2023-10-16

所以我有这个类,它保存了我的一些对象生成后。我来给你介绍一下:

dungeon是一个指向dungeon类对象的指针,该对象在一个名为DungeonLayers的向量中保存着一些DungeonLayers,然后该向量保存着Chambers的名字(dungeon is fill)

当我运行这段代码时:

Game::Game(std::vector<Enemy>* e, Dungeon* d, Hero* h) {
    enemies = e;
    dungeon = d;
    hero = h;
    DungeonLayer *currentLayer = dungeon->dungeonLayers.at(0);
    Chamber *currentChamber = currentLayer->chambers.at(0);
};

currentLayer和currentChamber都指向NULL,但是dungeonLayers.at(0)在"dungeon"中充满了DungeonLayer,当我在断点处查看本地时,我把它放在那里。为什么我的currentLayer指向NULL?

我是c++新手,所以我问这个问题,我可能在这里做了一些非常明显的错误

DungeonLayer *currentLayer = dungeon->dungeonLayers.at(0);
Chamber *currentChamber = currentLayer->chambers.at(0);

在形式上是不正确的,因为*currentLayer是一个指针,这意味着:

currentLayer contains address of an object of type DungeonLayer

所以你没有正确初始化currentLayer。正确使用指针类型的方法:

DungeonLayer *currentLayer = &(dungeon->dungeonLayers[0]); //address of something 

清楚了吗?或者我换个更好的形式