https //blog.naver.com/qkrghdud0/220874542726


공부하고 있는 책의 내용 일부를 어떤 블로거가 인용한 건데

아래 나와있는 "임시 객체 유지 시키기"가 잘 안된다


클래스

class CTestData

{

   .. Do Events

}


함수

CTestData TestFunc(int nParam)

{

CTestData a(nParam, "a");

return a;

}


메인문

int main()

{

   CTestData &rData = TestFunc(10);


   .. Do Events

}


위 내용은 임시객체에 별명을 부여해서 메인문이 끝날 때까지 유지시킨다는 건데

프로젝트 솔루션은 Release 모드로 돼있고, 그대로 코드 복사해서 빌드했는데 오류남

오류 내용은 "비const 참조는 lvalue에만 바인딩할 수 있습니다."


그 말은 rData가 rvalue를 받고 있다는 건데 바인딩 자체가 안되는거 같음

그럼 임시객체(rvalue)를 바인딩 하려면 CTestData &&r 혹은

TestFunc 정의 부분에서 CTestData를 동적할당 한담에 lvaule 값만 리턴해서 &rData에 바인딩하는건데

Release 모드 입혀도 안되는거 보니 뭔가 빼먹은거 같다


알려줄 사람 없나