다음 foo 클래스의 멤버가 있습니다.클래스에서 this로 반환 참조
foo &foo::bar()
{
return this;
}
하지만 컴파일러 오류가 발생합니다. 무슨 멍청한 짓을하는거야?
컴파일러 오류 (GCC) : 오류 : 'foo는 *의 CONST'
다음 foo 클래스의 멤버가 있습니다.클래스에서 this로 반환 참조
foo &foo::bar()
{
return this;
}
하지만 컴파일러 오류가 발생합니다. 무슨 멍청한 짓을하는거야?
컴파일러 오류 (GCC) : 오류 : 'foo는 *의 CONST'
this
유형의 임시의 유형 'foo는 &'의 const가 아닌 참조의 잘못된 초기화 포인터입니다. 그래야합니다 return *this;
Naveen이 지적한대로 *this
을 반환해야합니다.
약간의 애매한 컴파일러 오류의 의미를 파악하는 방법은 다른 컴파일러로 컴파일하여 더 나은 메시지가 있는지 확인하는 것입니다. 예를 들어 Comeau online을 사용할 수 있습니다. 그것은 제공이 경우
: -하지만 어떤 경우에는 메시지가 더 나은 방법이다가이 경우에 더 나은"ComeauTest.c", line 7: error: initial value of reference to non-const must be an
lvalue
return this;
^
확실하지.
+1 빠른 팁. 그것은 정말로 분명해질 수 있습니다. – Francesco
실제로 MSVC 2008 반환 "오류 C2440 : '반환': 'foo * const'에서 'foo &'"로 변환 할 수 없습니다. "나는 꽤 명확하다고 생각합니다. –
감사합니다. 나는 이것을 알아야합니다. – Thomas