2010-12-02 3 views
0

런타임에 typeid (this) .name()을 사용하여 RTTI가 활성화되었다고 가정하면 현재 클래스 이름을 가져올 수 있습니다.런타임시 C++에서 기본 클래스 이름을 가져 오는 방법이 있습니까?

"this"에 대한 기본 클래스의 이름을 가져올 수 있기를 바랍니다. 그게 가능하니? 차이가 나는 경우 다중 상속을 사용하지 않습니다.

+0

왜 필요한가요? 일반적으로 RTTI가 필요하다고 판단되면 이는 디자인 문제의 징조입니다. – Dima

+0

내가 원했던 이유는 레거시 시스템의 프레임 워크에서 기존 호출을 사용하여 디버그 출력을 제공하기 위해서였습니다. 클래스 이름과 기본 클래스 이름은 코드에서 사용할 수 있지만 약 300 개의 클래스가 있으므로 한 번의 전역 검색 및 바꾸기에서 사용할 수있는 무언가를 찾고있었습니다. 고객 요청입니다. 나는 완전히 다른 방법으로 그 문제를 해결했을 것이지만, 레거시 소프트웨어와의 이진 호환성의 제약은 나의 해결책을 방해한다. –

답변

1

아니요. 죄송합니다. 이 방법으로 클래스 이름을 가져 오는 방법은 구현에 따라 다릅니다. 내 구현에서는, 나는 맹 글링 된 이름을 얻는다.

0

아니, 그것은하지 않고,이 기능을 필요로하는 이유는 의심스러운 :

+0

이 나오면 OP가 얻고 자하는 것에 대한 모호한 사용 사례가있을 수 있습니다. –

+0

내가 원했던 이유는 레거시 시스템의 프레임 워크에서 기존 호출을 사용하여 디버그 출력을 제공하기 위해서였습니다. 클래스 이름과 기본 클래스 이름은 코드에서 사용할 수 있지만 약 300 개의 클래스가 있으므로 한 번의 전역 검색 및 바꾸기에서 사용할 수있는 무언가를 찾고있었습니다. –

2

게다가, 난 당신에 대한 정확한 값 AFAIK (당신에게 클래스 이름을 지정 typeid(this).name() 믿을 수 없다고 생각이다 돌려 주어지는 것은 구현으로 정의되고있다).

1

C++ 철학이 명시 적으로 요구하지 않는 한 정보를 제공하지 않기 때문에 정보를 어디에서나 안정적으로 저장하지 못하기 때문에 정보를 안정적으로 검색 할 수 없습니다.

관련 문제