2012-06-08 3 views
2

아래 코드가 동적으로 캐스팅되는 동안 오류가 발생합니다.동적 캐스팅 오류

class CBase 
    { 
    }; 

    class CDerived: public CBase 
    { 
    }; 



    main() 
    { 

    CBase b; 
    CDerived* pd; 
    pd = dynamic_cast<CDerived*>(&b); 
    } 

오류 코드는 :error C2683: 'dynamic_cast' : 'CBase' is not a polymorphic type.

+0

오류 메시지는 분명히 분명합니다. 정확히 이해할 수 없습니까? 또한 주요 함수는 필수 int return 유형이 없다는 점에 유의하십시오. ! whups,'PD = static_cast (&b);' – PlasmaHH

+0

는'을'static_cast. 가상 메소드는 단지 가상 소멸자하더라도 기본 클래스. – Mesop

+0

@PlasmaHH이 C#을, 내 나쁜 생각 –

답변

10

dynamic_cast다형성 클래스와 함께 작동합니다.
기본 클래스 CBase적어도 하나의 가상 메서드을 가져야합니다.

+3

+1 : 당신이 사용할 수있는 사용자의 경우 –

+0

기본 클래스에 가상 메서드가 있으면 (아마도) 가상 소멸자가 있어야하므로 가상 소멸자 만 추가하면됩니다. –