Похоже, Zero() нельзя вызывать для полудинамической матрицы. Могу ли я попросить вас объяснить ошибку компиляции ниже:
Matrix<double, 3, Dynamic> M = Matrix<double, 3, Dynamic>::Zero(3);
In instantiation of ‘static const Eigen::CwiseNullaryOp<CustomNullaryOp, typename Eigen::internal::conditional<Eigen::internal::is_same<typename Eigen::internal::traits<T>::XprKind, Eigen::MatrixXpr>::value, Eigen::Matrix<typename Eigen::internal::traits<T>::Scalar, Eigen::internal::traits<T>::RowsAtCompileTime, Eigen::internal::traits<T>::ColsAtCompileTime, (AutoAlign | ((Eigen::internal::traits<T>::Flags & Eigen::RowMajorBit) ? RowMajor : ColMajor)), Eigen::internal::traits<T>::MaxRowsAtCompileTime, Eigen::internal::traits<T>::MaxColsAtCompileTime>, Eigen::Array<typename Eigen::internal::traits<T>::Scalar, Eigen::internal::traits<T>::RowsAtCompileTime, Eigen::internal::traits<T>::ColsAtCompileTime, (AutoAlign | ((Eigen::internal::traits<T>::Flags & Eigen::RowMajorBit) ? RowMajor : ColMajor)), Eigen::internal::traits<T>::MaxRowsAtCompileTime, Eigen::internal::traits<T>::MaxColsAtCompileTime> >::type> Eigen::DenseBase<Derived>::NullaryExpr(Eigen::Index, const CustomNullaryOp&) [with CustomNullaryOp = Eigen::internal::scalar_constant_op<double>; Derived = Eigen::Matrix<double, 15, -1>; typename Eigen::internal::conditional<Eigen::internal::is_same<typename Eigen::internal::traits<T>::XprKind, Eigen::MatrixXpr>::value, Eigen::Matrix<typename Eigen::internal::traits<T>::Scalar, Eigen::internal::traits<T>::RowsAtCompileTime, Eigen::internal::traits<T>::ColsAtCompileTime, (AutoAlign | ((Eigen::internal::traits<T>::Flags & Eigen::RowMajorBit) ? RowMajor : ColMajor)), Eigen::internal::traits<T>::MaxRowsAtCompileTime, Eigen::internal::traits<T>::MaxColsAtCompileTime>, Eigen::Array<typename Eigen::internal::traits<T>::Scalar, Eigen::internal::traits<T>::RowsAtCompileTime, Eigen::internal::traits<T>::ColsAtCompileTime, (AutoAlign | ((Eigen::internal::traits<T>::Flags & Eigen::RowMajorBit) ? RowMajor : ColMajor)), Eigen::internal::traits<T>::MaxRowsAtCompileTime, Eigen::internal::traits<T>::MaxColsAtCompileTime> >::type = Eigen::Matrix<double, 15, -1>; Eigen::Index = long int]’:
/usr/local/include/Eigen/src/Core/CwiseNullaryOp.h:213:41: required from ‘static const ConstantReturnType Eigen::DenseBase<Derived>::Constant(Eigen::Index, const Scalar&) [with Derived = Eigen::Matrix<double, 15, -1>; Eigen::DenseBase<Derived>::ConstantReturnType = Eigen::CwiseNullaryOp<Eigen::internal::scalar_constant_op<double>, Eigen::Matrix<double, 15, -1> >; typename Eigen::internal::conditional<Eigen::internal::is_same<typename Eigen::internal::traits<T>::XprKind, Eigen::MatrixXpr>::value, Eigen::Matrix<typename Eigen::internal::traits<T>::Scalar, Eigen::internal::traits<T>::RowsAtCompileTime, Eigen::internal::traits<T>::ColsAtCompileTime, (AutoAlign | ((Eigen::internal::traits<T>::Flags & Eigen::RowMajorBit) ? RowMajor : ColMajor)), Eigen::internal::traits<T>::MaxRowsAtCompileTime, Eigen::internal::traits<T>::MaxColsAtCompileTime>, Eigen::Array<typename Eigen::internal::traits<T>::Scalar, Eigen::internal::traits<T>::RowsAtCompileTime, Eigen::internal::traits<T>::ColsAtCompileTime, (AutoAlign | ((Eigen::internal::traits<T>::Flags & Eigen::RowMajorBit) ? RowMajor : ColMajor)), Eigen::internal::traits<T>::MaxRowsAtCompileTime, Eigen::internal::traits<T>::MaxColsAtCompileTime> >::type = Eigen::Matrix<double, 15, -1>; typename Eigen::internal::traits<T>::Scalar = double; Eigen::Index = long int; Eigen::DenseBase<Derived>::Scalar = double]’
/usr/local/include/Eigen/src/Core/CwiseNullaryOp.h:472:18: required from ‘static const ConstantReturnType Eigen::DenseBase<Derived>::Zero(Eigen::Index) [with Derived = Eigen::Matrix<double, 15, -1>; Eigen::DenseBase<Derived>::ConstantReturnType = Eigen::CwiseNullaryOp<Eigen::internal::scalar_constant_op<double>, Eigen::Matrix<double, 15, -1> >; typename Eigen::internal::conditional<Eigen::internal::is_same<typename Eigen::internal::traits<T>::XprKind, Eigen::MatrixXpr>::value, Eigen::Matrix<typename Eigen::internal::traits<T>::Scalar, Eigen::internal::traits<T>::RowsAtCompileTime, Eigen::internal::traits<T>::ColsAtCompileTime, (AutoAlign | ((Eigen::internal::traits<T>::Flags & Eigen::RowMajorBit) ? RowMajor : ColMajor)), Eigen::internal::traits<T>::MaxRowsAtCompileTime, Eigen::internal::traits<T>::MaxColsAtCompileTime>, Eigen::Array<typename Eigen::internal::traits<T>::Scalar, Eigen::internal::traits<T>::RowsAtCompileTime, Eigen::internal::traits<T>::ColsAtCompileTime, (AutoAlign | ((Eigen::internal::traits<T>::Flags & Eigen::RowMajorBit) ? RowMajor : ColMajor)), Eigen::internal::traits<T>::MaxRowsAtCompileTime, Eigen::internal::traits<T>::MaxColsAtCompileTime> >::type = Eigen::Matrix<double, 15, -1>; typename Eigen::internal::traits<T>::Scalar = double; Eigen::Index = long int]’
../src/COpdCtrl.cpp:77:49: required from here
/usr/local/include/Eigen/src/Core/CwiseNullaryOp.h:147:3: error: static assertion failed: YOU_TRIED_CALLING_A_VECTOR_METHOD_ON_A_MATRIX
EIGEN_STATIC_ASSERT_VECTOR_ONLY(Derived)
Спасибо за помощь
Сильвен