私はオブジェクトが生成された後にこのクラスを保持しています。私はそれらを説明します:ポインターがベクトル内のNULLを指している
ダンジョンは、チェンの名のベクトルを保持しているdungeonLayersという名前のベクトルで、いくつかのDungeonLayersを保持しているダンジョンクラスのオブジェクトへのポインタである(ダンジョンが満たされている)
をするとIこのコードを実行します。
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)「ダンジョン」にDungeonLayerで満たされています。 currentLayerがNULLを指すのはなぜですか?
私はこの問題を尋ねるので、私はC++の初心者です。ここで間違いがあります。
currentLayer contains address of an object of type DungeonLayer
をですから、正しくcurrentLayerを初期化していない:* currentLayerはつまり、ポインタであるため、
あなたは私が望んでいる割り当ての後にブレークポイントを設定しますか?あなたが経験しているもののスクリーンショットがここでは適切でしょう。 –
試してみてください:DungeonLayer * cl =&(dungeon-> dungeonLayers [0]); – IssamTP
@IssamTPこのコードは、dungeonLayersがすでにDungeonLayerポインタを保持するベクターであり、そのアドレスを取得する必要はないことを示しています。 " –