在我的职业生涯中,我只使用 Java 进行编程,并且从 10 天就开始使用 C++,所以这个问题对你们中的许多人来说可能看起来很奇怪。我在头文件中定义了一个类的结构:
#include "ros/ros.h"
#include "nav_msgs/Odometry.h"
#include "geometry_msgs/Pose.h"
#include "geometry_msgs/Point.h"
#include “stdio.h”
#include "sensor_msgs/LaserScan.h"
#包括“列表”
#include “向量”
#include "scan_node.h"
#include “odom_node.h”
#include “coord.h”
类 stage_listener{
上市:
stage_listener();
私人的:
std::list odom_list;
std::list 扫描列表;
std::listcorners_list;
std::list polar2cart(std::vector, 浮点数, 浮点数, 浮点数, 浮点数);
void addOdomNode (const nav_msgs::Odometry);
无效 addScanNode (const sensor_msgs::LaserScan);
void extractCorners(std::vector, float, float, float, float);
整数距离(浮动,浮动,浮动,浮动,浮动);
无效节点2文本(std::vector,std::vector);
int numOdom();
整数扫描();
};
在相关的 .cpp 文件中,我写了一个 main:
int main(int argc, char **argv){
字符缓冲区[1024];
而(1){
int i = fscanf(stdin,"%s",buffer);
如果(strcmp(“退出”,缓冲区)== 0)
退出(0);
否则 if(strcmp("num_nodes",buffer) == 0){
ROS_INFO("里程计节点:%i\n扫描节点:%i",numOdom(),numScan());
}
别的{}
}
}
ROS_INFO 函数是 Willow Garage 的 ROS 的一部分,您可以像普通的 printf 一样使用它,以相同的形式获取完全相同的参数。在编译代码时,我得到以下信息:
/home/ubisum/fuerte_workspace/beginner/src/stage_listener.cpp:在函数'int main(int,char**)'中: /home/ubisum/fuerte_workspace/beginner/src/stage_listener.cpp:223:5:错误:“numOdom”未在此范围内声明 /home/ubisum/fuerte_workspace/beginner/src/stage_listener.cpp:223:5:错误:“numScan”未在此范围内声明
你知道错误的原因吗?在 Java 中,您可以访问私有字段/函数,所以我无法理解在 C++ 中这是不可能的原因。