例如工程 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
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
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
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_