eigen C++报错 EIGEN_STATIC_ASSERT

报错如下:

In instantiation of ‘Eigen::DenseCoeffsBase<Derived, 1>::Scalar& Eigen::DenseCoeffsBase<Derived, 1>::operator[](Eigen::Index) [with Derived = Eigen::Matrix<float, -1, -1>; Eigen::DenseCoeffsBase<Derived, 1>::Scalar = float; Eigen::Index = long int]:
>error: static assertion failed: THE_BRACKET_OPERATOR_IS_ONLY_FOR_VECTORS__USE_THE_PARENTHESIS_OPERATOR_INSTEAD
  406 |       EIGEN_STATIC_ASSERT(Derived::IsVectorAtCompileTime,
  note: ‘Eigen::Matrix<float, -1, -1>::IsVectorAtCompileTime’ evaluates to false

在 Eigen 库中,矩阵对象不支持使用方括号运算符来访问元素。具体来说,在 main.cpp 文件的第 29 行,使用了方括号运算符来访问矩阵元素,而 Eigen 库要求使用括号运算符。

要解决这个问题,可以将第 29 行的代码修改为使用括号运算符来访问矩阵元素,
解决办法,定位到出错那一行: 例如:

matrix[i][j] = 0 ;

改为:

matrix[i](j) = 0 ;

你可能感兴趣的:(c++,开发语言)