首先定义(robot_imu::*PFImuFunc)指针函数
typedef void(robot_imu::*PFImuFunc)();
头文件中定义map 。在 std::map 中,Key 和 T 一起组成了 std::map 的 value_type:typedef pair<const Key, T> value_type;
std::map<int, PFImuFunc> m_mapInitImu;//dingyi
std::map<int, PFImuFunc> m_mapReadSerial;
构造函数中初始化robot_imu()函数,并通过判断语句调用m_mapInitImu[IMU_CHOOSE]函数,
robot_imu::robot_imu()
{
initmap();
if (Robot_Serial.isOpen())
{
(this->*((PFImuFunc)(m_mapInitImu[IMU_CHOOSE])))();
}
}
map中【】中的值为定义的int类型,赋值为函数指针PFImuFunc类型
// init map function
void robot_imu::initmap()
{
m_mapReadSerial[YS_IMU] = (PFImuFunc)&robot_imu::ReadSerialImuData_YS;//YS_IMU=1
m_mapInitImu[YS_IMU] = (PFImuFunc)&robot_imu::init_YS;
}
map中【】中的值为定义的char类型,赋值为int类型
std::map<char,int> first;
first['a']=10;
first['b']=30;
first['c']=50;
first['d']=70;