이 코드가 작동하지 않는 이유는 무엇입니까?dynamic_pointer_cast를 사용할 때 동적 캐스트를 수행 할 수 없습니다.
std::shared_ptr<Event> e = ep->pop();
std::shared_ptr<TrackerEvent> t;
t = std::dynamic_pointer_cast<TrackerEvent>(e);
나는 다음과 같은 오류가 발생합니다 : Event
에서
/usr/include/c++/4.6/bits/shared_ptr.h:386: error: cannot dynamic_cast '(& __r)->std::shared_ptr<Event>::<anonymous>.std::__shared_ptr<_Tp, _Lp>::get [with _Tp = Event, __gnu_cxx::_Lock_policy _Lp = (__gnu_cxx::_Lock_policy)2u]()' (of type 'class Event*') to type 'class TrackerEvent*' (source type is not polymorphic)
TrackerEvent
상속 그래서 난 문제가 내가이 방향에 캐스팅 할 수없는 것 같다. 그러나 ep->pop()
은 Event
또는 TrackerEvent
유형의 객체를 반환 할 수 있습니다. 그리고 나는 ... 나는 TrackerEvent
에 캐스팅하려고하고 NULL
을 반환 할 때 내가 Event
또는 TrackerEvent
이 있는지 내가 아는 것이라고 기대했다
내가 어떻게 할 것인가?
당신이 필요 dynmaic_cast를 사용하기위한 적어도 하나의 가상 메소드가 있어야합니다. – stardust