@[TOC]解决openVSlam编译遇到的setMeasurement重定义问题
根因
继承g2o中BaseEdge模板类后,在graph_opt_edge类,mono_perspective_pose_opt_edge类,stereo_perspective_pose_opt_edge类中使用该方法,会出现重定义报错,有点像菱形继承
解决方法
- 在base_edge.h中将setMeasurement方法注释,如下
EIGEN_STRONG_INLINE const Measurement& measurement() const { return _measurement;}
//virtual void setMeasurement(const Measurement& m) { _measurement = m;
}
- 在base_unary_edge.h和base_binary_edge.h中添加
virtual void setMeasurement(const Measurement& m){
_measurement = m;
}
- 在graph_opt_edge.h中添加
void setMeasurement(const Measurement& m) override {
_measurement = m;
}
- 重新编译,不再报错