理解できないポインタの問題が発生しています。このようにポインタを1000回使用したようですので、ここで何が起こっているのかよくわかりません。私は次のコードを持っています:
int iRetVal;
CycleCountOrder* cycleOrder = NULL;
CycleCountLineItem* cycleLine = NULL;
iRetVal = m_CycleCount.GetCCOrderLine(pOneLocation.szOrderNum[c], cycleOrder, cycleLine);
GetCCOrderLineを呼び出すたびに、関数内に移動し、ポインターcycleOrderとcycleLineに有効な値を割り当てます。GetCCOrderLine関数の外に出ると、参照は再びNULLになります。以下のコードは、GetCCOrderLineの定義方法です。
ヘッダーファイル
int GetCCOrderLine(CString szOrderLnitem, CycleCountOrder* cycleOrder, CycleCountLineItem* cycleCountLine);
cppファイル
int CCycleCount::GetCCOrderLine(CString szOrderLnitem, CycleCountOrder* cycleOrder, CycleCountLineItem* cycleCountLine)
{
CString szCurrOrderLnitem;
for(int c = 0; c < m_Orders.GetCount(); c++)
{
CycleCountOrder* currentOrder = m_Orders[c];
for(int d = 0; d < currentOrder->m_LineItems.GetCount(); d++)
{
CycleCountLineItem* currentLine = currentOrder->m_LineItems[d];
szCurrOrderLnitem.Format("%s-%d-%d", currentOrder->szOrderNum, currentLine->nLnitemNum, currentLine->nSubitemNum);
if(szCurrOrderLnitem == szOrderLnitem)
{
cycleOrder = currentOrder;
cycleCountLine = currentLine;
return FUNC_OK;
}
}
}
return FUNC_ERROR;
}
また、上記のコードでアクセスされ、渡されたポインターに値を割り当てるために使用されている2つの配列は、次のように宣言されています。また、これらの配列は、new演算子で作成されたオブジェクトで埋められます。
CArray<CycleCountOrder*, CycleCountOrder*> m_Orders;
CArray<CycleCountLineItem*, CycleCountLineItem*> m_LineItems;