상속 된 클래스의 포인터를 확인하는 방법은 무엇입니까?

Nowax

두 개의 클래스가 있다고 가정 해 봅시다 : 클래스 A에서 상속 된 다 모어 클래스 A와 클래스 B. 클래스 A의 포인터가 클래스 B의 객체를 가리키는 지 어떻게 확인할 수 있습니까?

세르게이 칼리니첸코

런타임 유형 정보 (RTTI) 가 활성화되어 있다고 가정하면 포인터를 B*using으로 캐스트하고 dynamic_castnull이 아닌 값을 다시 가져 오는지 확인할 수 있습니다 .

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] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

믹스 인의 대상 클래스가 메타 클래스에서 상속 된 경우 믹스 인을 타이핑하는 방법은 무엇입니까?

분류에서Dev

상속 된 클래스에서 필드의 범위를 "재정의"하는 방법은 무엇입니까?

분류에서Dev

포인터 속성이 모두 초기화 된 상태에서 QGraphicsItem을 생성 된 클래스로 다운 캐스트하는 방법은 무엇입니까?

분류에서Dev

Ruby의 상속 된 부모 메서드에서 자식 클래스를 얻는 방법은 무엇입니까?

분류에서Dev

C ++ : 두 클래스에 다른 클래스를 가리키는 포인터가 포함 된 경우 파생 클래스 간의 템플릿 순환 종속성을 해결하는 방법은 무엇입니까?

분류에서Dev

컴파일 타임에 클래스에 상속 된 함수가 있는지 확인하는 방법은 무엇입니까?

분류에서Dev

클래스의 인스턴스에서 _init_를 상속하는 방법은 무엇입니까?

분류에서Dev

상속 된 데이터 클래스에서 선택적 필드를 만드는 방법은 무엇입니까?

분류에서Dev

상속 된 창의 인스턴스를 하나만 열도록 허용하는 방법은 무엇입니까?

분류에서Dev

구체적인 자식 클래스의 재정의 된 메서드에서 추상 클래스의 생성자를 통해 인스턴스화 된 개체의 속성에 액세스하는 방법은 무엇입니까?

분류에서Dev

부모 클래스 함수에서 상속 된 객체를 사용하는 방법은 무엇입니까?

분류에서Dev

매핑 된 수퍼 클래스에서 @Id를 상속하는 방법은 무엇입니까?

분류에서Dev

상속 된 클래스를 멤버 개체로 처리하는 방법은 무엇입니까? C ++

분류에서Dev

상속 된 다른 클래스에서 슈퍼 생성자를 호출하는 방법은 무엇입니까?

분류에서Dev

상속 된 속성이 클래스 (하위 클래스)의 일부인지 확인하는 방법

분류에서Dev

Android 인터페이스와 관련된 순환 상속을 수정하는 방법은 무엇입니까?

분류에서Dev

.NET에서 직렬 포트의 상태를 지속적으로 확인하는 방법은 무엇입니까?

분류에서Dev

상속 된 클래스의 변수가 무언가와 같을 때 메서드를 실행하는 방법은 무엇입니까?

분류에서Dev

상속 된 메서드를 재정의하는 대신 확장하는 방법은 무엇입니까?

분류에서Dev

인터페이스를 클래스 속성으로 정의하는 방법은 무엇입니까?

분류에서Dev

QT Creator에서 QWidget을 상속 된 클래스의 객체로 선언하는 방법은 무엇입니까?

분류에서Dev

Eclipse, 클래스에 정의 된 속성 수를 찾는 방법은 무엇입니까?

분류에서Dev

Java Mirror API를 사용하여 클래스가 추상인지 확인하는 방법은 무엇입니까?

분류에서Dev

부모 필드에서 상속 된 개체의 인스턴스를 만드는 방법은 무엇입니까?

분류에서Dev

C ++의 상속 된 클래스에서 일반 메서드를 정적 메서드로 변경하는 방법은 무엇입니까?

분류에서Dev

내 프로젝트에서 ES6 클래스의 상속 관계를 확인하는 방법은 무엇입니까?

분류에서Dev

벡터에 저장된 객체에 속하는 포인터를 삭제하는 방법은 무엇입니까?

분류에서Dev

기존 봉인 된 클래스를 올바르게 인터페이스하는 방법은 무엇입니까?

분류에서Dev

기존 봉인 된 클래스를 올바르게 인터페이스하는 방법은 무엇입니까?

Related 관련 기사

  1. 1

    믹스 인의 대상 클래스가 메타 클래스에서 상속 된 경우 믹스 인을 타이핑하는 방법은 무엇입니까?

  2. 2

    상속 된 클래스에서 필드의 범위를 "재정의"하는 방법은 무엇입니까?

  3. 3

    포인터 속성이 모두 초기화 된 상태에서 QGraphicsItem을 생성 된 클래스로 다운 캐스트하는 방법은 무엇입니까?

  4. 4

    Ruby의 상속 된 부모 메서드에서 자식 클래스를 얻는 방법은 무엇입니까?

  5. 5

    C ++ : 두 클래스에 다른 클래스를 가리키는 포인터가 포함 된 경우 파생 클래스 간의 템플릿 순환 종속성을 해결하는 방법은 무엇입니까?

  6. 6

    컴파일 타임에 클래스에 상속 된 함수가 있는지 확인하는 방법은 무엇입니까?

  7. 7

    클래스의 인스턴스에서 _init_를 상속하는 방법은 무엇입니까?

  8. 8

    상속 된 데이터 클래스에서 선택적 필드를 만드는 방법은 무엇입니까?

  9. 9

    상속 된 창의 인스턴스를 하나만 열도록 허용하는 방법은 무엇입니까?

  10. 10

    구체적인 자식 클래스의 재정의 된 메서드에서 추상 클래스의 생성자를 통해 인스턴스화 된 개체의 속성에 액세스하는 방법은 무엇입니까?

  11. 11

    부모 클래스 함수에서 상속 된 객체를 사용하는 방법은 무엇입니까?

  12. 12

    매핑 된 수퍼 클래스에서 @Id를 상속하는 방법은 무엇입니까?

  13. 13

    상속 된 클래스를 멤버 개체로 처리하는 방법은 무엇입니까? C ++

  14. 14

    상속 된 다른 클래스에서 슈퍼 생성자를 호출하는 방법은 무엇입니까?

  15. 15

    상속 된 속성이 클래스 (하위 클래스)의 일부인지 확인하는 방법

  16. 16

    Android 인터페이스와 관련된 순환 상속을 수정하는 방법은 무엇입니까?

  17. 17

    .NET에서 직렬 포트의 상태를 지속적으로 확인하는 방법은 무엇입니까?

  18. 18

    상속 된 클래스의 변수가 무언가와 같을 때 메서드를 실행하는 방법은 무엇입니까?

  19. 19

    상속 된 메서드를 재정의하는 대신 확장하는 방법은 무엇입니까?

  20. 20

    인터페이스를 클래스 속성으로 정의하는 방법은 무엇입니까?

  21. 21

    QT Creator에서 QWidget을 상속 된 클래스의 객체로 선언하는 방법은 무엇입니까?

  22. 22

    Eclipse, 클래스에 정의 된 속성 수를 찾는 방법은 무엇입니까?

  23. 23

    Java Mirror API를 사용하여 클래스가 추상인지 확인하는 방법은 무엇입니까?

  24. 24

    부모 필드에서 상속 된 개체의 인스턴스를 만드는 방법은 무엇입니까?

  25. 25

    C ++의 상속 된 클래스에서 일반 메서드를 정적 메서드로 변경하는 방법은 무엇입니까?

  26. 26

    내 프로젝트에서 ES6 클래스의 상속 관계를 확인하는 방법은 무엇입니까?

  27. 27

    벡터에 저장된 객체에 속하는 포인터를 삭제하는 방법은 무엇입니까?

  28. 28

    기존 봉인 된 클래스를 올바르게 인터페이스하는 방법은 무엇입니까?

  29. 29

    기존 봉인 된 클래스를 올바르게 인터페이스하는 방법은 무엇입니까?

뜨겁다태그

보관