Bu kod neden çalışmıyor?dynamic_pointer_cast Kullanıldığında Dinamik Döndü Edilemiyor
std::shared_ptr<Event> e = ep->pop();
std::shared_ptr<TrackerEvent> t;
t = std::dynamic_pointer_cast<TrackerEvent>(e);
aşağıdaki hatayı alıyorum: Event
den
/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
devralır bu yüzden sorun bu yönde döküm olamaz sanırım. Ancak ep->pop()
, Event
veya TrackerEvent
türünde bir nesneyi döndürebilir. Ve ben ... Ben TrackerEvent
için döküm deneyin ve NULL
döndüğünde ben bir Event
veya TrackerEvent
olup olmadığını bildiğim umuyordum
Bunu nasıl yapardın?
Sen gerek dynmaic_cast'i kullanmak için en az bir sanal yönteme sahip olmak. – stardust