我知道这个问题问了很多次了,但我还是被困住了。我以为我知道这个错误是什么--很明显,我没有。
所以,我得到的错误是
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无关)。
发布于 2018-07-27 09:57:22
您需要使getMessage
非静态化,或者使pub
成为静态的。
也许你真正需要做的是重新考虑你的设计。你为什么要把getMessage
变成静态的?作为一个非常普遍的经验法则,静态是一个错误,特别是对于一个新手。
https://stackoverflow.com/questions/51555228
复制相似问题