저같은 경우는 설계를 뜯어고치지 않고, RTTI 를 해결할 수 있어서 쓸 때가 있었고요.
만일 C++ 가 아니라 Java, C# 이상의 고급언어라면 좀더 동적인 것이 가능합니다.
사실 C++ 라도 DLL(Unix는 so) 을 통해 가능한 것이긴 하죠. 작업이 많고, 귀찮아서 문제지만요...
제일 쉬운 예는 다형성을 지원하는 콘테이너를 들 수 있겠군요...
element에서 a, b, c타입이 각각 상속되었다고 가정할 때
element를 자료형으로 가지는 콘테이너가 있다면 a, b, c 타입의 것들은 다 가질 수 있죠...
꺼내쓸 때 a인지 b인지 c인지 확인해야 하는데... RTTI가 필요하죠. dynamic_cast
컴파일러가 버전업되면서 부터 RTTI는 기본적으로 지원(on)되는 것이 일반화가 되었습니다.
예를 들자면 foo라는 (virtual) method에서 에러가 나는 경우
foo method가 A클래스의 멤버인지 아니면 B클래스의 멤버인지를 알 수 있으면 좋겠죠?
디버깅 및 여러가지 이유에서 RTTI를 사용하는 것이 편리합니다.
편하면 쓰세요.
저같은 경우는 설계를 뜯어고치지 않고, RTTI 를 해결할 수 있어서 쓸 때가 있었고요.
만일 C++ 가 아니라 Java, C# 이상의 고급언어라면 좀더 동적인 것이 가능합니다.
사실 C++ 라도 DLL(Unix는 so) 을 통해 가능한 것이긴 하죠. 작업이 많고, 귀찮아서 문제지만요...
제일 쉬운 예는 다형성을 지원하는 콘테이너를 들 수
제일 쉬운 예는 다형성을 지원하는 콘테이너를 들 수 있겠군요...
element에서 a, b, c타입이 각각 상속되었다고 가정할 때
element를 자료형으로 가지는 콘테이너가 있다면 a, b, c 타입의 것들은 다 가질 수 있죠...
꺼내쓸 때 a인지 b인지 c인지 확인해야 하는데... RTTI가 필요하죠. dynamic_cast
gilgil.net
컴파일러가 버전업되면서 부터 RTTI는 기본적으로 지원(on)되는 것이 일반화가 되었습니다.
예를 들자면 foo라는 (virtual) method에서 에러가 나는 경우
foo method가 A클래스의 멤버인지 아니면 B클래스의 멤버인지를 알 수 있으면 좋겠죠?
디버깅 및 여러가지 이유에서 RTTI를 사용하는 것이 편리합니다.
www.gilgil.net
댓글 달기