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 키워드를 적용해 주자.
Posted by six605
,