Я пытаюсь написать функцию, которая принимает матрицу фиксированного размера, используя шаблон размера матрицы. Я прочитал http://eigen.tuxfamily.org/dox/TopicFunctionTakingEigenTypes.html, но Я не могу заставить его работать идеально. Я не мог использовать операции блока матрицы фиксированного размера в матрице фиксированного размера внутри моей функции. (TutorialBlockOperations.html">http://eigen.tuxfamily.org/dox/group_TutorialBlockOperations.html)
Я пытался сделать это двумя способами, но оба они не сработали.
Вот определение функции A:
template <int N>
Matrix<double, 3, N> foo(const Matrix<double, 3, N>& v)
{
Matrix<double, 3, N> ret;
Vector3d a = v.leftCols<1>(); // error: expected primary-expression before ')' token
return ret;
}
Вот определение функции B:
template<typename Derived>
Eigen::MatrixBase<Derived> bar(const Eigen::MatrixBase<Derived>& v)
{
EIGEN_STATIC_ASSERT_FIXED_SIZE(Derived);
EIGEN_STATIC_ASSERT(Derived::RowsAtCompileTime == 3,
THIS_METHOD_IS_ONLY_FOR_MATRICES_OF_A_SPECIFIC_SIZE);
Eigen::Matrix<double,
Derived::RowsAtCompileTime,
Derived::ColsAtCompileTime> ret;
Vector3d a = v.leftCols<1>(); // error: expected primary-expression before ')' token
return ret;
}
Есть идеи?