上QQ阅读APP看书,第一时间看更新
2.1 C++工程的组织结构
C++工程的组织结构虽然可以说是“仁者见仁,智者见智”的问题,但是当项目规模较大且参与开发的人员较多时,就要遵循一定的范式以便于项目管理。
2.1.1 C++工程的一般组织结构
一般情况下,C++工程的组织结构是将不同的功能封装在不同的类中,每个类用配套的头文件和源文件来实现,头文件可以是*.h、*.hpp之类的文件,源文件可以是*.cc、*.cpp之类的文件。最后在main函数中,调用类来实现具体的功能。如图2-1所示为一个典型的C++工程的组织结构,main函数调用Class A和Class B,而Class B需要调用Class C。
图2-1 C++工程的一般组织结构
2.1.2 C++工程在机器人中的组织结构
在机器人项目中,C++工程代码通常分成两个部分:一个部分用于实现具体算法,另一个部分用于进行ROS接口封装。算法部分的C++代码通常采用图2-1所示的方式进行组织,并且算法部分的代码往往可以独立运行或作为库安装到系统中;ROS接口部分的C++代码则采用ROS的方式进行组织。如图2-2所示,ROS接口负责数据输入、数据输出以及核心算法调用,后续章节中涉及的ORB-SLAM2和cartographer_ros都是采用这种方式来组织代码的。
图2-2 C++工程在机器人中的组织结构