我已经将RGBDSLAM转换为armhf(https://github.com/felixendres/rgbdslam_v2)并且我遇到了此功能的错误:
template <typename T >
QMatrix4x4 eigenTF2QMatrix(const T& transf)
{
Eigen::Matrix<double, 4, 4, Eigen::RowMajor> m = transf.matrix();
//QMatrix4x4 qmat( static_cast<qreal*>( m.data() ) ); (original line)
QMatrix4x4 qmat( m.data() );
printQMatrix4x4("From Eigen::Transform", qmat);
return qmat;
}
该行:
QMatrix4x4 qmat( m.data() );
以及原作:
QMatrix4x4 qmat( static_cast<qreal*>( m.data() ) );
给我错误:
error: invalid conversion from 'Eigen::PlainObjectBase<Eigen::Matrix<double, 4, 4, 1> >::Scalar* {aka double*}' to 'int' [-fpermissive]
如何修复此功能以在手臂上工作?
答案 0 :(得分:0)
你不能施放指针并期望它起作用。 Eigen有cast
方法,但它对临时工作不起作用,所以你必须执行一个副本:
using Eigen;
Matrix<qreal, 4, 4, RowMajor> mcopy = m.cast<qreal>();
QMatrix4x4 qmat(mcopy.data());