在类的构造函数中初始化actionlib::SimpleActionServer
时间: 2024-03-13 09:43:18 浏览: 21
在类的构造函数中初始化actionlib::SimpleActionServer,需要使用成员初始化列表来完成。以下是一个示例:
```cpp
#include <ros/ros.h>
#include <actionlib/server/simple_action_server.h>
#include <your_robot_msgs/ActionNameAction.h>
class YourClass
{
public:
YourClass(ros::NodeHandle& nh) : as_(nh, "action_name", boost::bind(&YourClass::executeCallback, this, _1), false)
{
// 初始化其他成员变量
}
void start()
{
as_.start();
}
private:
actionlib::SimpleActionServer<your_robot_msgs::ActionNameAction> as_;
void executeCallback(const your_robot_msgs::ActionNameGoalConstPtr& goal)
{
// 实现实际的行动操作,并返回结果
your_robot_msgs::ActionNameResult result;
as_.setSucceeded(result);
}
};
int main(int argc, char** argv)
{
ros::init(argc, argv, "your_node");
ros::NodeHandle nh;
YourClass your_class(nh);
your_class.start();
ros::spin();
return 0;
}
```
在这个示例中,类 `YourClass` 的构造函数使用 `as_` 成员初始化列表初始化 `actionlib::SimpleActionServer` 对象。同时,回调函数 `executeCallback` 中访问了 `as_` 对象。
在 `main` 函数中,首先创建了一个 `YourClass` 类对象,并调用其 `start` 方法来启动 `actionlib::SimpleActionServer` 对象。最后,使用 `ros::spin` 进入 ROS 循环。