예전에 typeid 포스팅을 한 적이 있습니다. (http://moltak.net/search/typeid) 참조
열심히 플젝을 하던 중 원하는 결과값이 안나와서 왜 그런가 하고 한시간 가량 삽질 끝에 알아 냈네요.;;

위 포스팅을 보시면 typeid( type ).name()을 통해서 type의 이름을 얻어 오는 것이 있습니다.
.name() 함수가 현재 타입을 알려주는 역할을 하죠.
저는 아래와 같이 사용하고 있었습니다.


다들 아시겠지만 우리가 원하는 결과는?? 젤 아래 결과가 당연히 Sub가 나와야 맞습니다.
하지만 그렇지 않더군요. 결과를 먼저 볼까요?

위와 같이 전부 Super 클래스가 나왔네요?? 왜 그런걸까요? 제가 잘 못했겠죠?? 아직 확실한 이유는 모르지만 결과를 올바르게 바꾸는 방법은 알아 냈습니다.





바로 위 소스와 같이 사용하지 않는 하나의 함수를 집어 넣는 것입니다. C++은 상속을 받았을 때, 가상함수 테이블이 생기게 됩니다. typeid는 클래스의 경우 가상함수 테이블을 보고 type을 결정짓지 않나 생각이 드네요.
정확히 아시는 분은 알려주세요. ㅠㅠ 기다리겠습니다. ㅋㅋ


Bloger: moltak.net


'Programming > 이것저것' 카테고리의 다른 글

Doxygen - 작성중  (0) 2011.03.08
_Crt Debug Functions  (0) 2010.07.23
세그먼트 레지스터  (0) 2010.05.01
x86 Register  (0) 2010.04.30
어셈블리어 점프 명령어  (0) 2010.04.29
다른 분들도 이 연산자를 사용하는지 모르겠지만... 저는 오늘 첨 알았네용ㅠㅠ
프로그래밍을 하던 중 인스턴스에 따라서 분기를 결정해야 했습니다. 평소 하던 방법은 문자열을 넣거나 nType이라는 타입 정수를 넣어서 그것에 맞춰서 해줬죠..
하지만 오늘 검색해보니 C++에서 C#과 같은 타입 비교 연산자가 있더군요;;
놀랐습니다.ㅋㅋ
아~~~주 좋습니다. ㅋㅋ


그래서 비교 코드를 아래 처럼 바꿀 수 있었죠.

아래는 skyarro라는 아이디를 쓰시는 블로그에서 퍼왔습니다.
결과 화면입니다.



모두 즐프요~~ㅋㅋ

'Programming > 이것저것' 카테고리의 다른 글

초기화 하지 않은 메모리  (0) 2010.04.16
[Design Pattern] Singleton Pattern  (2) 2010.04.16
enum 문자열  (0) 2010.04.09
ASCII Table  (0) 2010.04.05
사용자 정의 exception (1)  (0) 2010.03.21

+ Recent posts