如何在主函数中访问订阅者类的公共变量?
How to access a public variable of subscriber class in the main function?
我想访问我在订阅者类中定义的listener::flow_message
(一个公共变量(,在我的代码的main((函数中。 在下面的代码中,我只是简单地打印了flow_message
参数来显示问题。
我将flow_message
的访问修饰符更改为私有和受保护,但它出现编译错误,我发现在 main 函数中访问此变量的唯一方法是将其定义为公共。我可以使用以下命令主要获取一些属性,例如flow_message
向量的大小:
list.flow_message.size();
但是例如,当我想访问flow_message
向量的第一个成员时,使用以下命令,我得到分段错误错误。
list.flow_message[0];
// this is my code for subscribing the optical flow data
// using a class for subscriber callback function:
#include<ros/ros.h>
#include<opencv_apps/FlowArrayStamped.h>
#include<opencv_apps/FlowArray.h>
#include<opencv_apps/Flow.h>
#include<opencv_apps/Point2D.h>
#include<vector>
#include<numeric>
using namespace std;
class listener
{
public:
vector<opencv_apps::Flow> flow_message;
void callback(const opencv_apps::FlowArrayStamped::ConstPtr& msg);
};
void listener::callback(const opencv_apps::FlowArrayStamped::ConstPtr& msg)
{
listener::flow_message = msg->flow;
ROS_INFO("i got it");
}
int main(int argc, char **argv)
{
ros::init(argc, argv, "dataman");
ros::NodeHandle n;
listener list;
ros::Subscriber sub = n.subscribe("/lk_flow/flows", 1, &listener::callback, &list);
while(ros::ok())
{
cout << "this is it: " << list.flow_message[0] << endl;
ros::spinOnce();
}
return 0;
}
正如我在运行时错误之前提到的:
Segmentation fault (core dumped)
感谢您的任何帮助或评论...
你去获取flow_message[0]
但你永远不会将元素添加到向量中。如果向量为空,则flow_message[0]
不存在。
在向量中添加元素,您应该发布一条消息。
但是您还应该检查向量中的元素:
while(ros::ok()) {
if (list.flow_message.empty()) {
std::cout << "no messages" << std::endl;
} else {
std::cout << "this is it: " << list.flow_message[0] << std::endl;
}
ros::spinOnce();
}
相关文章:
- 是否可以将变量/函数返回作为模板参数传递
- 是否有一种方法可以修复编译器未找到特定的OPENCV变量/函数
- 访问实例化类的变量/函数
- 如何在变量函数参数列表中检测给定类型的参数的可用性,并在处理完所有参数后采取行动
- C 多组变量函数参数
- 最有cpu效率的方法是使用std::算法和变量函数模板的参数
- 在此作用域中未声明条件变量函数
- C 关于将数组复制到向量并调用其变量 /函数
- 仅在C 中的一个变量上,两个变量函数的数值集成(使用数值配方库)
- 在应用变量函数的矩阵元素上循环
- 如何向调试器隐藏变量/函数名
- C++11变量函数类型模板参数
- 变量函数参数的奇怪问题
- C++变量函数和cout
- c++模板变量函数未定义引用
- 我可以使用枚举类值作为变量函数的参数吗?
- 从另一个类访问变量/函数
- <"变量/函数"的多重定义>
- 从c++到C文件中定义的变量/函数的未定义引用
- 为什么转换变量函数参数很重要?