두 개의 클래스가 있다고 가정 해 봅시다 : 클래스 A에서 상속 된 다 모어 클래스 A와 클래스 B. 클래스 A의 포인터가 클래스 B의 객체를 가리키는 지 어떻게 확인할 수 있습니까?
런타임 유형 정보 (RTTI) 가 활성화되어 있다고 가정하면 포인터를 B*
using으로 캐스트하고 dynamic_cast
null이 아닌 값을 다시 가져 오는지 확인할 수 있습니다 .
A* ptr = ... // some pointer
if (dynamic_cast<B*>(ptr)) {
// ptr points to an object of type B or any type derived from B.
}
이를 수행하는 또 다른 방법은 다음을 사용하는 것입니다 typeid
.
if (typeid(*ptr) == typeid(B)) {
// ptr points to an object of type B, but not to a type derived from B.
}
참고 :이 작업을 자주 수행해야하는 경우 디자인을 개선 할 수 있습니다.
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다