std::vectors
とstd::maps
をstd::shared_ptrs
に構築しようとしていますが、データを失う癖があります。それで、std::shared_ptrs
を入力すると、それらのうちのいくつかがポイントするデータが削除されます。std :: shared_ptrのベクトルデータを失う
具体的には、std::vector
にプッシュされる最初のstd::shared_ptr
が削除されます。これは、元のstd::shared_ptr
が範囲外になるまで、参照カウントをインクリメントする必要がある場合、std::vector
にstd::shared_ptr
を挿入すると混乱しますか?他のstd::shared_ptrs
は削除されていないようですが、この問題が解決されるまでは、反復処理で値をチェックするまで確認できません。
自分自身について十分に説明していないと謝罪します。私はまだこのサイトに適応しています。
EDIT:Hereは、関連する2つのクラスのコードです。問題は、Loadメンバー関数にあるべきです。それはファイルパーサーなのでかなり大きいので、どこに問題があるのかは分かりません。値は、リストの場合はstd::vector<std::shared_ptr<NBT::Tag::Base>>
、化合物の場合はstd::map<std::string, std::shared_ptr<NBT::Tag::Base>>
のメンバ変数です。
コードサンプルを投稿する可能性がありますか? boost :: shared_ptrで説明したことを真似しようとしましたが、正しく動作するようです。 – Dawson
いくつかのコードを投稿できますか?あなたがしていることを正確に見ることなく、何が間違っているのかを見るのは難しいです。 – JaredC
申し訳ありませんが、今投稿します。 10のクラスと1つの基本クラスがありますが、関連するクラスを投稿するだけです。 – OniLink