개체에 특정 구성원이 있는지 확인하려면 어떻게 테스트합니까? 아니면 개체가 특정 클래스의 인스턴스인지 확인하는 방법이 있습니까?C++ 클래스가 멤버인지 여부를 테스트하는 방법은 무엇입니까?
저는 문자 - 그림의 상속 구조로 작업하고 있습니다. String_Pics, HCat_Pics, VCat_Pics 및 Frame_Pics가 있습니다. 그들은 모두 Pic_Base에서 파생됩니다. 사용자는 객체에 대한 스마트 포인터를 포함하는 "Picture"핸들 클래스를 사용합니다. 각 객체는 기반으로하는 그림 (다른 그림의 프레임, 수평으로 연결된 두 그림 등)에 대한 포인터를 저장합니다.
예 : VCat-Pic 주변의 프레임 -pic이며 VCat-Pic의 두 그림은 모두 String_Pics 주위의 Frame_Pics입니다.
***************
* *
* *********** *
* * This * *
* * is * *
* *********** *
* *********** *
* * The * *
* * Example * *
* *********** *
* *
***************
프레임 픽스에는 "프레임 문자"에 대한 데이터 멤버가 있지만 다른 클래스는 없습니다. 구조의 모든 프레임에 대해 프레임 문자를 재귀 적으로 변경하는 함수를 작성하고 있습니다. 어쩌면 나는 그렇지 않으면 할 방법이 없는데, 내가 다루는 객체가 Frame_Pic인지 아닌지를 테스트하는 방법을 찾고 있는데, 프레임의 문자를 변경하려고 시도 할 것인지 아닌지 여부 .
내 첫 번째 본능은 if (p->frame_char)
과 같은 것을 시도하는 것이 었습니다. 여기서 frame_char은 Frame_Pic의 데이터 멤버 중 하나의 이름이지만이 작업을 수행하는 방법을 모르겠습니다.
이것은 여러 번 전에 물어 보았습니다. 여기에 아름다운 해결책이있는 예가 있습니다. http://stackoverflow.com/questions/257288/is-it-possible-to-write-ac-template-to-check-check- for-a-functions-existence –
@AdamCadien 컴파일 타임 솔루션이라고 생각합니까? OP가 런타임을 필요로하는 것처럼 보입니다. –
그래, 나쁘다! 그 점을 지적 해 주셔서 감사합니다. –