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 모드 입혀도 안되는거 보니 뭔가 빼먹은거 같다
알려줄 사람 없나
댓글 0