我正在尝试编写一个从 double 或 float 类型获取 Eigen::Matrix 的函数。此函数适用于浮点数:
Eigen::Matrix<float, 4, 4> foo(const Eigen::Matrix<float, 4, 4> &T)
{
Eigen::Matrix<float, 4, 4> result;
result.block<3,3>(0,0) = T.block<3,3>(0,0).transpose();
return result;
}
但是,一旦我将“浮动”作为模板:
template <typename Scalar>
inline Eigen::Matrix<Scalar, 4, 4> foo(const Eigen::Matrix<Scalar, 4, 4> &T)
{
Eigen::Matrix<Scalar, 4, 4> result;
result.block<3,3>(0,0) = T.block<3,3>(0,0).transpose();
return result;
}
我在 linux 上使用 gcc 4.9.1 得到这个错误:
.../utils.hpp:在函数'Eigen::Matrix core::math::foo(const Eigen::Matrix&)'中:.../utils.hpp:77:47:错误:请求成员'转置' in '(0, 0)',属于非类类型 'int' result.block<3,3>(0,0) = T.block<3,3>(0,0).transpose( );
这里可能是什么问题?