error C2166: l-value가 const 개체를 지정합니다.
void ChRmtEvwrDoc::PrintLogRecordInfo(const CString &_strLogName) const
{
DWORD dwNumOfRecord = 0;
m_pEvt->ReadNumOfRecord(_strLogName, dwNumOfRecord);
if (1 >= dwNumOfRecord){
m_pRECORDINFO = new RECORDINFO;
if (NULL == m_pRECORDINFO)
return;
}
m_pEvt->PrintRecordInfo(ReadRecordInfo, _strLogName);
}
무엇이 잘못 되었는지 보이는가?
PrintLogRecordInfo() 함수는 const 함수라고 지정해 주었는데
함수 안에서 m_pRECORDINFO 포인터에 동적 메모리 할당을 시도 하고 있다.
즉 멤버 변수 m_pRECORDINFO 값을 변경하려 하고 있으므로 컴파일러가 메시지를 날려 준다.
함수 헤더 옆에 const 를 제거해 주면 되긴 한다.
class 디자인 뿐만 아니라 함수 기능도 조금더 생각해 보고 const 키워드를 적용해 주자.