指针在向量中指向NULL

时间:2016-10-05 11:56:27

标签: c++ c++11 pointers vector

所以我有这个类在生成后保存我的一些对象。我将引导你完成它们:

dungeon是一个指向Dungeon Class对象的指针,该对象在一个名为dungeonLayers的向量中保存一些DungeonLayers,然后它持有一个Chambers名称的向量(地牢被填充)

当我运行此代码时:

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 ++的新手,所以我问这个问题,我可能会在这里做一些非常明显的错误。

1 个答案:

答案 0 :(得分:2)

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 
这是否清楚?或者我会尝试提出更好的形式。