这段代码出了什么问题?
class Event;
class EventPtr : public std::shared_ptr<Event>
{
public:
template<typename T>
std::shared_ptr<T> castTo() {
return std::dynamic_pointer_cast<T>(this);
}
};
我收到以下编译错误:没有用于调用'dynamic_pointer_cast'的匹配函数
以下是用法:
void SomeClass::onEvent(EventPtr event)
{
auto e = event.castTo<SomeEvent>();
// using casted event
}
答案 0 :(得分:4)
您只是调用函数传递指针代替引用。尝试:
return std::dynamic_pointer_cast<T>(*this); // note the "star"