例如工程 PA 和 PB 都需要函数 f
现在
class A {
#include "F.hpp"
}
class B {
#include "F.hpp"
}
F.hpp 的内容
public:
double g_odom_yaw = 0.;
obj sub_magnet = create_sub(topic_name, 1, std::bind(sub_callback, this, _1));
virtual void sub_callback(const std_msgs::msg::Float32::SharedPtr msg)
{
g_odom_yaw = msg->data;
}
现在问题卡在 std::bind(sub_callback, this, _1); 这边
如果写成
class A {
public:
double g_odom_yaw = 0.;
obj sub_magnet = create_sub(topic_name, 1, std::bind(&A::sub_callback, this, _1));
virtual void sub_callback(const std_msgs::msg::Float32::SharedPtr msg)
{
g_odom_yaw = msg->data;
}
}
class B {
public:
double g_odom_yaw = 0.;
obj sub_magnet = create_sub(topic_name, 1, std::bind(&B::sub_callback, this, _1));
virtual void sub_callback(const std_msgs::msg::Float32::SharedPtr msg)
{
g_odom_yaw = msg->data;
}
}
我怎么把共用的内容抽取出来呢?
解决方法
点击(此处)折叠或打开
- 在类A和类B中定义别名
- namespace ns_A
- {
- class A; //前置类定义
- using HostClass = A;//类重命名
- class A
- {
- #include "F.hpp"
- }
- }//end ns_A
- namespace ns_B
- {
- class B; //前置类定义
- using HostClass = B;//类重命名
- class B
- {
- #include "F.hpp"
- }
- }//end ns_B
- F.hpp 的内容
- #ifndef _SUB_MOTOR_MAGNET_MODULE_CODE_HPP_
- #define _SUB_MOTOR_MAGNET_MODULE_CODE_HPP_
- public:
- double g_odom_yaw = 0;
- rclcpp::Subscription<std_msgs::msg::Float32>::SharedPtr sub_magnet = create_subscription<std_msgs::msg::Float32>(PUB_MOTOR_MAGNET, 1, std::bind(&HostClass::sub_motor_magnet_callback, this, _1));
- virtual void sub_motor_magnet_callback(const std_msgs::msg::Float32::SharedPtr msg)
- {
- g_odom_yaw = msg->data;
- }
- #endif //_SUB_MOTOR_MAGNET_MODULE_CODE_HPP_