我正在編譯使用C++數學庫Eigen3的C++庫。但是,下面的代碼與VC2013編譯時引入一些語法錯誤:是C++類遵循模板關鍵字
template <typename Derived>
inline Eigen::Transform<typename Derived::Scalar, 3, Eigen::Isometry> v2t(const Eigen::MatrixBase<Derived>& x_) {
Eigen::Transform<typename Derived::Scalar, 3, Eigen::Isometry> X;
Eigen::Matrix<typename Derived::Scalar, 6, 1> x(x_);
X.template linear() = quat2mat(x.template block<3,1>(3,0));
X.template translation() = x.template block<3,1>(0,0);
return X;
}
錯誤消息如下:
Error C2059 syntax error : 'template'
Error C2039 'X' : is not a member of 'Eigen::Transform<float,3,1,0>'
Error C2059 syntax error : 'template'
Error C2039 'X' : is not a member of 'Eigen::Transform<float,3,1,0>'
我還從來沒有見過的代碼一樣,X.template
所以我不知道我怎麼可以這樣做來糾正這個編譯錯誤。有任何想法嗎?
您使用的是什麼版本的特徵?我抓住了最新的副本,找不到那個代碼......那個庫中的代碼是你編譯的,然後引用Eigen? ..''X.template linear()'應該像'X.template linear()'或者只是簡單的'X.linear()'.. –
txtechhelp
@txtechhelp我不編譯Eigen,它是一個庫正在使用Eigen http://jacoposerafin.com/nicp/ – feelfree
'X.template'和'x.template'無效C++;你打算這些表達意味着什麼? –