所以我有这个类在生成后保存我的一些对象。我将引导你完成它们:
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 ++的新手,所以我问这个问题,我可能会在这里做一些非常明显的错误。
答案 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
这是否清楚?或者我会尝试提出更好的形式。