0
我正在嘗試編寫一個函數,它可以從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;
}
我得到這個錯誤使用gcc 4.9.1在Linux上:
.../utils.hpp: In function 'Eigen::Matrix core::math::foo(const Eigen::Matrix&)': .../utils.hpp:77:47: error: request for member 'transpose' in '(0, 0)', which is of non-class type 'int' result.block<3,3>(0,0) = T.block<3,3>(0,0).transpose();
這裏有什麼問題?
真棒,這作品!儘管我不確定我是否理解到底發生了什麼,以及「模板塊」的作用......可以詳細解釋還是給我一些解釋指示? – 2014-10-02 13:01:00
你可以看看[我爲什麼要把模板和類型名關鍵字](http://stackoverflow.com/questions/610245/where-and-why -DO-I-有到把最模板和類型名稱的關鍵字) – Jarod42 2014-10-02 13:04:07