我在我的职业生涯中只编程使用过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 "list"
#include "vector"
#include "scan_node.h"
#include "odom_node.h"
#include "coord.h"
class stage_listener{
public:
stage_listener();
private:
std::list<odom_node> odom_list;
std::list<scan_node> scan_list;
std::list<coord> corners_list;
std::list<coord> polar2cart(std::vector<float>, float, float, float, float);
void addOdomNode (const nav_msgs::Odometry);
void addScanNode (const sensor_msgs::LaserScan);
void extractCorners(std::vector<float>, float, float, float, float);
int distance (float, float, float, float, float);
void nodes2text(std::vector<odom_node>, std::vector<scan_node>);
int numOdom();
int numScan();
};
在相关的.cpp文件中,我编写了一个主函数:
int main(int argc, char **argv){
char buffer [1024];
while(1){
int i = fscanf(stdin,"%s",buffer);
if(strcmp("exit",buffer) == 0)
exit(0);
else if(strcmp("num_nodes",buffer) == 0){
ROS_INFO("Odometry nodes: %i\nScan nodes: %i",numOdom(),numScan());
}
else{}
}
}
ROS_INFO函数是Willow Garage的ROS的一部分,您可以像普通printf一样使用它,以完全相同的形式获取参数。 编译代码时,我得到以下结果:
main
是一个static
方法。你仍然需要创建一个类实例才能调用它的方法,除非所有相关的方法都是static
的,但显然这里不是这种情况。 - Praetorian