8wDlpd.png
8wDFp9.png
8wDEOx.png
8wDMfH.png
8wDKte.png

当两个成员都在同一个类中时,出现错误“非静态成员引用必须相对于特定对象”

JAGADEESH UNDAVALLI 2月前

83 0

我知道这个问题已经被问过很多次了,但我仍然卡住了。我以为我明白这个错误是什么了,但显然我不明白。所以,我得到的错误是一个非静态成员引用 m...

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

所以我得到的错误是

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 成员函数使用同一类的变量成员?

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

帖子版权声明 1、本帖标题:当两个成员都在同一个类中时,出现错误“非静态成员引用必须相对于特定对象”
    本站网址:http://xjnalaquan.com/
2、本网站的资源部分来源于网络,如有侵权,请联系站长进行删除处理。
3、会员发帖仅代表会员个人观点,并不代表本站赞同其观点和对其真实性负责。
4、本站一律禁止以任何方式发布或转载任何违法的相关信息,访客发现请向站长举报
5、站长邮箱:yeweds@126.com 除非注明,本帖由JAGADEESH UNDAVALLI在本站《class》版块原创发布, 转载请注明出处!
最新回复 (0)
  • @DimitrisPantelis 通常将成员函数设为静态的动机是因为您需要将其用作回调。这是一个众所周知的问题,如何从回调函数转到对象。谷歌搜索可能会有所帮助。

返回
作者最近主题: