【发布时间】:2018-07-27 09:45:49
【问题描述】:
我知道这个问题已被问过很多次,但我仍然卡住了。我以为我明白了这个错误是什么,显然我没有。
所以,我得到的错误是
a nonstatic member reference must be relative to a specific object
我的代码是:
class theTranslator {
public:
ros::NodeHandle nh;
ros::Publisher pub = nh.advertise<sensor_msgs::Image>("camera/depth/image_raw", 100);
static void getMessage(const sensor_msgs::Image::ConstPtr& recMmsg) {
ROS_INFO( "I heard message" );
pub.publish(recMmsg); //*** ERROR IS HERE ***
}
};
由于pub 与getMessage() 属于同一类,它不应该工作吗?如何让static 成员函数使用同一类的变量成员?
附:这是在 ROS(机器人操作系统)中完成的,但我认为这是一个 C++ 错误(与 ROS 无关)。
【问题讨论】:
-
编译器如何知道要使用哪个对象的 pub 成员?您必须发送例如指向实际 theTranslator 对象的指针或引用作为 getMessage 的参数,并访问该实例的 pub 成员。但通常情况下,静态成员 fcns 只访问静态数据。