Dim*_*lis 3 c++ static class ros
我知道这个问题已经被问过很多次了,但我仍然被困住了。我以为我明白了这个错误的含义,但显然我没有明白。
所以,我得到的错误是
a nonstatic member reference must be relative to a specific object
Run Code Online (Sandbox Code Playgroud)
我的代码是:
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 ***
}
};
Run Code Online (Sandbox Code Playgroud)
既然pub与 属于同一类getMessage(),那么它不应该起作用吗?如何使static成员函数使用同一类的变量成员?
PS这是在ROS(机器人操作系统)中完成的,但我相信这是一个C++错误(与ROS无关)。
在 C++ 中,您无法从静态方法访问非静态类成员。使其成为正常方法并尝试如下:-
void getMessage(const sensor_msgs::Image::ConstPtr& recMmsg){
ROS_INFO( "I heard message" );
pub.publish(recMmsg); //*** ERROR IS HERE ***
}
Run Code Online (Sandbox Code Playgroud)
否则将 pub 声明为静态成员
static ros::Publisher pub;
Run Code Online (Sandbox Code Playgroud)
另请参考下面的回答
| 归档时间: |
|
| 查看次数: |
16197 次 |
| 最近记录: |