2013-10-18 35 views
0

我試圖從指針數組中提取值時遇到問題。 首先我把數據陣列中的是這樣的:來自CPtrArray的輸入和回溯信息MFC

RHExportType* rhet = new RHExportType; 

     for (int i = 0; i <= 9; i++) 
     { 
      CString* strTemp; 

      strTemp = CRHExportTypeCollection::GetTypesAndDescription(i); //retruns the first pointer to an CString array 


      rhet->type = i;  

      _tcscpy(rhet->extension, *strTemp); 
      ++strTemp; 
      _tcscpy(rhet->description, *strTemp); 

      pArr.Add(rhet) 
     } 

RHExportType是具有兩個字段爲char的結構[50]類型和一個int型。 pArr在函數CPtrArray & pArr中聲明爲out參數。

然後我訪問數據:

int sizeArr = m_RHExpType.m_ExpTypeArr.GetSize(); 
for(int i=0; i<12; i++) 
{  
    RHExportType* pRHET = (RHExportType*)m_RHExpType.m_ExpTypeArr.GetAt(i); 

    strTemp.Format(_T("%s (.%s)"), pRHET->description, pRHET->extension); 
} 

但無論指數(I)的值,它總是返回最後插入值。 我加錯了數據?或者問題在於檢索數據?

回答

1

看來,您正在更新並在循環的每次迭代中將相同的對象插入到數組中。因此,該對象正在獲取最後一個對象的值。

試試這個:

for (int i = 0; i <= 9; i++) 
{ 
    RHExportType* rhet = new RHExportType; 
    ... 
} 
+0

這是問題,我是一個有點粗心。謝謝。 –