bool(T::* …) 有什么作用?

从 ROS 1 开始node_handle.h,某个 API 被指定为:

template<class T, class MReq, class MRes>
ServiceServer NodeHandle::advertiseService(const std::string &service, bool(T::*srv_func)(MReq &, MRes &), T* obj)

srv_func是此服务的回调,MReq是请求类,MRes是结果类。obj是因为这是回调的类成员版本。

有人可以解释一下这个语法bool(T::*...是什么意思吗?是否只是强制执行srv_func必须是 的类成员T,而不是任何旧函数?

回答

template<class T, class MReq, class MRes> ServiceServer NodeHandle::advertiseService(const std::string &service, bool(T::*srv_func)(MReq &, MRes &), T* obj)

这是一个函数模板。T,MReqMRes是模板的模板类型参数。

(const std::string &service, bool(T::*srv_func)(MReq &, MRes &), T* obj)

这是函数模板的参数列表

bool(T::*srv_func)(MReq &, MRes &)

这是函数模板的第二个参数。

参数名称为 ,参数srv_func类型为bool(T::*)(MReq &, MRes &)。该类型是指向T返回bool并具有类型参数的类类型的非静态成员函数的指针MReq &, MRes &


以上是bool(T::* …) 有什么作用?的全部内容。
THE END
分享
二维码
< <上一篇
下一篇>>