질문과 답변

C++, MFC 에서 런타임에 클래스 객체 멤버 목록을 얻는 방법 있나요? 날짜:2022-5-27 8:52:41 조회수:83
작성자 : 보이화이트
포인트 : 71
가입일 : 2020-04-26 15:17:30
방문횟수 : 87
글 10개, 댓글 11개
소개 : 반갑습니다~ 개발자입니다~ ^^
작성글 보기
쪽지 보내기
C# 에는 Type.GetMembers() 로 런타임에 객체의 메소드 목록, 필드목록을 얻어올수 있는데
MFC 에서 CRuntimeClass 구조체를 보면 GetMembers() 같은 함수를 찾지 못했습니다..
C++ 이나 MFC 에서도 이러한 기능이 있는지 궁금합니다 (_ _)

 

목록보기 삭제 수정 신고 스크랩

작가K 5월29일 2:24:53  

해당 기능을 RTTI라고 합니다.
Run Time Type Information이며 실행중의 타입의 정보를 알아 내는 기능이에요.
다만, 자바나 C#과는 달리 이 기능의 디폴트가 off로 되어 있습니다.
C언어의 구조상 이 기능이 들어가면 느려지거든요.
컴파일 옵션에서 이 기능을 켜면 관련 기능을 쓸 수 있습니다.

보이화이트 5월29일 4:55:44  


네 답변 감사합니다

찾아보니 말씀대로
MFC 프로젝트 속성 - C/C++ - Language - Enable Run-Time Type Information 에 보면 기본적으로 꺼져있는 상태네요
이걸 켰는데

type_info 타입을 사용하여     const type_info& ti = typeid(obj);    형태로 사용해보면
ti.name(), ti.raw_name(), ti.hash_code()  세가지 정보만 얻을수 있는데

제가원하는건 멤버변수 이름 목록, 멤버함수 이름 목록을 얻어오는것인데
ex) "func1", "func2", ...    "m_value1", "m_value2", ....
혹시 type_info 클래스 외에 다른 RTTI 사용법이 있을까요?

ㅠㅠ


로그인하셔야 댓글을 달 수 있습니다.