私は夏のプロジェクトとして小さなゲームエンジンを書いていますが、STLマップに少し苦労しています。
RenderList
オブジェクトを保持するクラスを宣言しました。Renderer
RenderListは、作業を行うためにクラスに渡されます。
RenderList
がありますmap<std::string,Entity*> objects;
Entity*
マップからを取得しようとして、次のようになるまでは、すべて機能します。
vc / include / xtree式でアサーションが失敗しました:マップ/セットイテレータは参照解除できません。
これは、ポインタを取得するためのコードです。
Entity* RenderList::getByName(std::string str){
return objects.find(str)->second;
}
必要なサブクラスが異なるため、実際のオブジェクトではなく、ポインターを保持するためにEntity
必要です。
私はSTLにかなり慣れていませんが、ポインターをマップに格納するべきではありませんか?
確かに私はこれを許可されるべきですか、それとも代わりにオブジェクトを保存する方が良い考えですか?
そして最後に、私は単にそれを間違っているのですか!?
この質問が重複していないことを願って、私は事前にクイック検索を行いました。また、これがGameDev Stackでより良い場合は、そこに投稿します。