尝试从指针数组中提取值时遇到问题。
首先,我将数据放入数组中,如下所示:
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);
}
但是无论index(i)的值是什么,它总是返回最后插入的值。
我添加数据错误吗?还是问题在于检索数据?
最佳答案
似乎您在循环的每次迭代中都将同一对象更新并插入到数组中。因此,该对象正在获取最后一个对象的值。
尝试这个:
for (int i = 0; i <= 9; i++)
{
RHExportType* rhet = new RHExportType;
...
}