복사 생성자에서 private 맴버 접근?
글쓴이: Geniys / 작성시간: 수, 2006/06/21 - 8:14오후
복사 생성자에서 복사하려는 원본에서 변수를 가져올때 get함수를 만들어서 사용했더니 에러가 발생하더군요.
그런데 private여서 당연히 함수로 불러와야 될줄알았는데...
그저 "객체.name"으로도 접근이 가능하던데,
그렇다면 private 의 접근 권한에 위배된것이 아닌가요?
아래에서 origin과 old_origin 모두 private 입니다.
Region::Region(const Region& in) { origin = in.origin; old_origin = in.old_origin; }
만약 함수를 사용하면,
Region::Region(const Region& in) { Image tmp = in.get_region_image(); //이부분 origin = in.origin; old_origin = in.old_origin; }
다음과 같은 에러가 발생합니다.
E:\@ing\VS6\Algo_RPT\Region.cpp(32) : error C2662: 'get_region_image' : cannot convert 'this' pointer from 'const class Region' to 'class Region &'
Conversion loses qualifiers
솔직히 에러도 잘 이해가 되지 않습니다.
이런 이유를 알고 싶습니다.
Forums:
private 접근 제한은
private 접근 제한은 오브젝트 단위가 아니라 클래스 단위입니다. 같은 클래스에 속하기만 한다면 다른 오브젝트의 private 멤버에 접근할 수 있습니다.
그리고 get_region_image() 에 const 선언이 되어 있어야 합니다. 그렇지 않으면 const Region& in 에 대해 호출할 수 없습니다. (Region& in 라면 호출할 수 있겠지요). const 성질을 보장하기 위한 제한입니다.
댓글 달기