Motor里面包含制动和位置传感器。使用了枚举来描述电机的类型
typedef enum {ROTATIONAL=0,LINEAR} Type;
旋转电机Type=ROTATIONAL
直线电机Type=LINEAR
1 类前置声明
利用类前置声明和指针以防止类嵌套导致的编译失败。
2 explicit
explicit用来阻止隐式类型转换。
3 virtual
virtual修饰的成员函数被指向派生类对象的基类指针调用,则调用到的都是最终派生类(英语:most-derived class)中的函数实现。
4 成员函数()后面加const
成员函数()后面加const代表该成员函数内部不能出现更改类成员变量的代码。
5 getTag()
getTag是类Device的常成员函数,返回类型为WbDeviceTag 的tag,当前设备的tag。
getPositionSensorTag调用的是wb_motor_get_position_sensor(WbDeviceTag tag),返回设备里的位置传感器Tag
Robot::getDeviceFromTag()返回Device *
6 dynamic_cast<>()
dynamic_cast是C++强制类型转换操作函数。
dynamic_cast < type-id > ( expression)
该运算符把expression转换成type-id类型的对象
在Motor.hpp里,将基类指针转换成子类指针。