[C++] RTTI와 dynamic_cast
저장소/VC++문제는 어쨋든 해결 했으나 정확한 원인을 파악하지 못했기에 남겨둔다.
RTTI는 Run-time Type Information 다. 그냥 그렇다구.
dynamic_cast를 사용하기 위해서는 /GR 옵션을 사용해야 한다. 맞나?
visual studio 6.0은 프로젝트 설정에서 따로 옵션을 추가하거나 사용을 체크해줘야 한다.
visual studio 2008은 기본 설정으로 되어있다. 더 자세한 내용은 그냥 검색하든가 책을 보자.
문제는 dynamic_cast를 사용하는 환경에는 아무 문제가 없는데 문제가 발생했다는거.
상속도 정상적이었고 생성도 문제 없었음.
업 캐스팅은 문제가 없었으나 다운 캐스팅을 할 때 NULL이 반환됨.
컴파일 과정에서 어떠한 경고나 에러 발생하지 않았음.
모든 상황을 다 확인했으나 문제 없어보였음.
결국 함수 단위로 쪼개서 테스트 해보니
error C2243: '형식 캐스팅' 발생!
원인은 상속받을 때 다음과 같이 했다는거.
class Book{};
class Bible : Book{};
이게 뭣이당가! public 빼먹었더니만 캐스팅 할 때 바로 문제가 나오는데!
왜 아무런 경고나 에러가 발생하지 않았었을까?
link 할 때 뭔가 잘못 된 것 같긴 한데 정확한 원인을 모르겠다!! @_@
'저장소 > VC++' 카테고리의 다른 글
deprecated 설정 (0) | 2012.09.11 |
---|---|
Windows 권한 (0) | 2012.08.20 |
[Win32 API] 메모리 유효성 검증(사용 금지) (0) | 2012.06.20 |
Windows XP sp2 환경에서 exe 또는 dll 사용 시 재부팅 문제 (0) | 2012.06.13 |
[MFC] CDockablePane (0) | 2012.02.10 |