当两个成员位于同一类中时出错"a nonstatic member reference must be relative to a specific object"
Getting error "a nonstatic member reference must be relative to a specific object" while both member are in the same class
我知道这个问题被问了很多次,但我仍然被卡住了。我以为我明白了这个错误是什么,显然我没有。
所以,我得到的错误是
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无关(。
在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++静态成员函数和变量
您需要使getMessage
为非静态,或者使pub
为静态。
也许你真正需要做的是重新思考你的设计。为什么要使getMessage
静态?作为一个非常普遍的经验法则,静态是一个错误,尤其是对于新手来说。
相关文章:
- 我的项目不会像"undefined reference to `grpc::g_core_codegen_interface'"那样使用未定义的引用错误进行编译
- Visual Studio Code "undefined reference to `WinMain@16'"
- 使用 MATLAB 编码器生成C++代码:编译错误"undefined reference to `rgb2gray_tbb_real64'"
- 使用 [] 运算符时"binding reference of type discards qualifiers"
- 如何处理 c++ 中类实现中的"invalid use of non-static data member"?
- 为什么创建友元类的实例会导致"undefined reference to"错误?
- 应用程序崩溃并显示"symbol _ZdlPvm, version Qt_5 not defined in file libQt5Core.so.5 with link time reference"
- Tensorflow c++ api undefined reference to 'tflite::D efaultErrorReporter()'
- 当两个成员位于同一类中时出错"a nonstatic member reference must be relative to a specific object"
- 这是什么意思:"member reference type 'Human *' is a pointer; did you mean to use '->'?"
- 如何解决访问不同功能的"nonstatic member reference must be relative to a specific object"
- 在这种情况下如何解决"Reference to non-static member function must be called"?
- 结构错误"uninitialized reference member"
- 为什么一个文件中没有错误,另一个文件中没有错误 - "Non Static Member Reference mush be relative to specific object"
- 不断收到错误"member reference base type 'string [1000]' is not a structure or union"不知道如何解决?
- "error : a nonstatic member reference must be relative to a specific object"是什么意思?
- C++ "Error: a nonstatic member reference must be relative to a specific object"
- "There is no "reference-to-member" type in C + +",std::bind 和 boost::bind 在同一条船上
- 实现观察者模式的问题:"Member reference base type ________ is not a structure or union"
- 在优先级队列上调用推送时出现错误"reference to non-static member function must be called"