gpt4 book ai didi

c++ - 当两个成员都在同一个类中时出现错误 "a nonstatic member reference must be relative to a specific object"

转载 作者:行者123 更新时间:2023-11-27 22:38:12 24 4
gpt4 key购买 nike

我知道这个问题已经被问过很多次了,但我还是卡住了。我以为我明白这个错误是什么,而我显然不知道。

所以,我得到的错误是

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 ***
}
};

因为 pubgetMessage() 属于同一个类,它不应该起作用吗?如何使 static 成员函数使用同一类的变量成员?

附言这是在 ROS(机器人操作系统)中完成的,但我认为这是一个 C++ 错误(与 ROS 无关)。

最佳答案

在 C++ 中,您不能从静态方法访问非静态类成员。使它成为一个正常的方法,然后像下面这样尝试:-

 void getMessage(const sensor_msgs::Image::ConstPtr& recMmsg){
ROS_INFO( "I heard message" );
pub.publish(recMmsg); //*** ERROR IS HERE ***
}

否则将 pub 声明为静态成员

static ros::Publisher pub; 

另请引用下面的答案

C++ static member functions and variables

关于c++ - 当两个成员都在同一个类中时出现错误 "a nonstatic member reference must be relative to a specific object",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51555228/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com