C/C++/에러도우미
'형식 캐스팅' : ...로의 변환이 있지만 액세스할 수 없습니다.
Midach
2010. 7. 20. 23:01
CTest* a;
CParent* p = (CParent*)a;
등과 같이 부모클래스로 캐스팅할때..
아래처럼 실수로 쓰지 상속관계를 정의하지 않은 경우에 private으로 자동설정되어 접근할 수 없어 발생하는 에러다. 간단히 상속관계를 public으로 바꿔주면 해결된다.
CTest : CParent
{
};
를..
CTest : public CParent
{
};
로 바꿔주면 된다.
애초에 private 상속은 두가지 규칙을 가진다. 아래는 Effective C++에 나온 부분을 발췌한것.
첫번째로 부모클래스로의 변환불가
두번째로 부모클래스의 멤버들이 자식클래스의 private 멤버가 된다.(출처 Effective C++)
기타..
두번째로 부모클래스의 멤버들이 자식클래스의 private 멤버가 된다.(출처 Effective C++)
기타..
따라서 저런 에러가 발생하는 것이다.