[미완] CArray에서 GetAt와 ElementAt 차이
GetAt는 복사본이 넘어오고
ElementAt는 포인트가 넘어온다.
즉 GetAt로 받은 변수의 값을 변경해도 원본은 그대로다.
CArray의 값을 변경하고 싶은면 ElementAt 사용
/////////////////////////////////////////
의문점
VS 2008로 테스트를 해봤는데
struct stTemp
{
CString str1;
CString str2;
} ;
CArray<stTemp, stTemp> a;
stTemp sTemp1;
sTemp1.str1 = _T("1");
sTemp1.str2 = _T("1");
stTemp sTemp2;
sTemp2.str1 = _T("2");
sTemp2.str2 = _T("2");
a.Add(sTemp1);
a.Add(sTemp2);
// 입력값 확인
for ( int i = 0; i < a.GetSize(); i++ )
{
CString a1 = a.GetAt(i).str1;
CString a2 = a.GetAt(i).str2;
}
// 입력값 변경
a.GetAt(0).str1 = _T("1 1");
a.GetAt(0).str2 = _T("2 2");
a.ElementAt(1).str1 = _T("akjfaklf");
a.ElementAt(1).str2 = _T("12312414");
// 변경된 값 확인
for ( int i = 0; i < a.GetSize(); i++ )
{
CString a1 = a.GetAt(i).str1;
CString a2 = a.GetAt(i).str2;
}
GetAt도 원본 값이 바뀐다;; 당황
댓글 없음:
댓글 쓰기