정리

'error C2243'에 해당되는 글 1건

  1. [C++] RTTI와 dynamic_cast

[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