我有一个包含向量的结构,如下所示:
struct MY_STRUCT
{
LONG lVariable;
CString strVariable;
BOOL bVariable;
vector<MY_ANOTHER_STRUCT> vecAnotherStruct;
};
而且我还有一个用于存储MY_STRUCT数据类型的 CArray:
CArray<MY_STRUCT> arMyStruct;
我能够将MY_STRUCT类型的元素添加到arMyStruct 中,并且我添加的所有元素都正确显示在“监视”窗口中。
当我尝试从 CArray 获取元素时出现问题。
// This line gives access violation error message.
MY_STRUCT structVariable = arMyStruct[0];
// This line work correctly
MY_STRUCT& structVariable = arMyStruct[0];
谁能指出为什么第一行不起作用?
编辑 :
以下是我认为可能有助于缩小问题范围的更多细节:
我有一个包含MY_STRUCT和arMyStruct定义的类,如下所示
class MyClass
{
struct MY_STRUCT
{
LONG lVariable;
CString strVariable;
BOOL bVariable;
vector<MY_ANOTHER_STRUCT> vecAnotherStruct;
};
CArray<MY_STRUCT> arMyStruct;
void function()
{
// This line gives access violation error message
// when trying to access from here
MY_STRUCT structVariable = arMyStruct[0];
}
};
void someFunction()
{
MyClass myClass;
MyClass::MY_STRUCT aStruct;
// initialize structure and add some data to vector
myClass.arMyStruct.Add(aStruct);
// This line work fine
// when trying to access from here
MY_STRUCT structVariable = arMyStruct[0];
// When trying to access CArray element from below function,
// gives access violation error message
myClass.function();
}