在c++中,这种错误一般就是错误地调用了不属于某个类的成员函数或者数据成员。
例如在使用ros的tf包进行坐标变换时,对于tf::Quaternion quat_tf,如果试图用quat_tf.x来读取四元数的第一个元素,就会出现上面的错误。必须用
tf::quaternionMsgToTF(quat_msg, quat_tf)
把其转换成geometry_msgs::Quaternion 才能用quat_msgs.x来获取四元数的第一个元素。
备注:这个错误较隐蔽且不易发现,特撰文记录之。