std::list に push_back を実行した後、オブジェクトが変更されたようです。
これは、push_back の前のオブジェクトです。
有効な m_parent_reference ポインターの後、最終的に nullptr になり、チェーンが終了する方法を確認してください。
これは、私のオブジェクトが push_back() 後にどのように見えるかです
これで nullptr はなくなりました。代わりに、1 つの parent_reference がその子を参照し、終わりのないループを作成します。
m_InterchangeList
タイプですstd::list<CKerEDIInterchange>
m_parent_reference
タイプですCKerEDIReference
CKerEDIInterchange
から継承CKerEDIReference
- カスタム コピー コンストラクター
CKerEDIInterchange
もありませんCKerEDIReference
- Visual Studio 2010 SP1 および Visual Studio 2012 Update 2 でこの動作をテストしました。
- 変数 m_parent_reference は、コンストラクターを介してのみ設定できます
CKerEDIReference(const CKerEDIReference* const parent_reference = NULL) : m_parent_reference(parent_reference) {};
カスタム コピー コンストラクターと割り当て演算子を使用すると、次のことがわかります。
- 代入演算子は呼び出されません
- `CKerEDIReference::CKerEDIReference(const CKerEDIReference&) に指定された参照は、この終わりのないループが既に存在するため、既に壊れています。
編集 詳細情報:
- 呼び出し
{CKerEDIInterchange tmp(nInterchange);}
によってオブジェクトが破損することはありません。 - スライスは含まれません。m_InterchangeList は of型で
type std::list<CKerEDIInterchange>
、nInterchange 型の場合はCKerEDIInterchange
誰かが次にどこを見るべきかのヒントを教えてくれるかどうか本当に知りたい.
前もって感謝します、ニック・パパジョルジオ