У меня проблема с указателем, которую я не могу понять. Кажется, я использовал указатели таким образом 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 file
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;
}
Также два массива, к которым осуществляется доступ в приведенном выше коде и которые используются для присвоения значений передаваемым указателям, объявляются следующим образом. Также эти массивы заполнены объектами, созданными с помощью нового оператора:
CArray<CycleCountOrder*, CycleCountOrder*> m_Orders;
CArray<CycleCountLineItem*, CycleCountLineItem*> m_LineItems;