C++ 用于动态\u指针\u转换的模板参数
这个代码怎么了C++ 用于动态\u指针\u转换的模板参数,c++,templates,pointers,c++11,casting,C++,Templates,Pointers,C++11,Casting,这个代码怎么了 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); } }; 我得到以下编译错误:没有匹配的函数用于调用“dynam
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\u pointer\u cast”
用法如下:
void SomeClass::onEvent(EventPtr event)
{
auto e = event.castTo<SomeEvent>();
// using casted event
}
您只是调用传递指针而不是引用的函数。尝试:
return std::dynamic_pointer_cast<T>(*this); // note the "star"
您只是调用传递指针而不是引用的函数。尝试:
return std::dynamic_pointer_cast<T>(*this); // note the "star"
首先,dynamic_pointer_cast接受引用而不是指针,但是你确定你是使用c++11支持编译的吗?还有,你包括了吗?是的,它是c++11,包括在内。首先,dynamic_pointer_cast接受引用而不是指针,但是你确定你是使用c++11支持编译的吗?还有,你包括了吗?是的,它是c++11,包括在内