본문 바로가기
프로그래밍/언어_스크립트

오랜만에 C++ -

by 써드아이 2017. 10. 30.

컴파일 에러 C2662


'this' 포인터를 'const XXXX'에서 'XXXX &'(으)로 변환할 수 없습니다.



http://simplesolace.tistory.com/entry/const-%EB%A9%A4%EB%B2%84-%ED%95%A8%EC%88%98



대입 생성자에서 넘겨받은 레퍼런스의 멤버 함수를 호출했더니 const 함수에서는 일반 함수를 호출할 수 없다나 뭐래나...

http://comfun.tistory.com/entry/error-C2662-PointGetY-this-%ED%8F%AC%EC%9D%B8%ED%84%B0%EB%A5%BC-const-Point%EC%97%90%EC%84%9C-Point-%EC%9C%BC%EB%A1%9C-%EB%B3%80%ED%99%98%ED%95%A0-%EC%88%98-%EC%97%86%EC%8A%B5%EB%8B%88%EB%8B%A4


그래서 호출한 함수를 const 함수로 변경하니 잘 된다...


대입 생성자


SomeClass &SomeClass ::operator = (const SomeClass &r_)
{
    if (&r_ == this) return *this;

    Data = *(r_.getData());

    return *this;
}


= 호출된 함수를 아래와 같이 변경하니까 아주 잘된다.


(변경전)

    PTR getData() { return &Data; }

(변경후)

    const PTR getData() const { return &Data; }