gpt4 book ai didi

c++ - 查找 Eigen 上失败的静态断言的来源

转载 作者:太空宇宙 更新时间:2023-11-04 13:37:27 25 4
gpt4 key购买 nike

我正在尝试编译一个相当大的代码库,它对 Eigen 有一定的依赖性。这样做,我收到以下错误:error C2338: THE_BRACKET_OPERATOR_IS_ONLY_FOR_VECTORS__USE_THE_PARENTHESIS_OPERATOR_INSTEAD 源自此处:

//    Eigen\src\Core\DenseCoeffsBase.h


/** \returns a reference to the coefficient at given index.
*
* This method is allowed only for vector expressions, and for matrix expressions having the LinearAccessBit.
*
* \sa operator[](Index) const, operator()(Index,Index), x(), y(), z(), w()
*/

EIGEN_STRONG_INLINE Scalar&
operator[](Index index)
{
#ifndef EIGEN2_SUPPORT
EIGEN_STATIC_ASSERT(Derived::IsVectorAtCompileTime,
THE_BRACKET_OPERATOR_IS_ONLY_FOR_VECTORS__USE_THE_PARENTHESIS_OPERATOR_INSTEAD)
#endif
eigen_assert(index >= 0 && index < size());
return derived().coeffRef(index);
}

由于 Eigen 依赖项遍布代码,我如何找到触发此错误的行? (显然,有一行代码使用 [] 访问特征矩阵,某处,这就是我要查找的行)。

最佳答案

是的,我也遇到过类似的问题。我将矩阵定义为:

Eigen::MatrixXf minor2x2 (2,2)。当矩阵 minor2x2 被初始化时:

minor2x2[0] = 1.0f;
minor2x2[1] = 1.0f;
minor2x2[2] = 1.0f;
minor2x2[3] = 1.0f;

触发了同样的错误。解决问题的方法是将minor2x2[i]替换为minor2x2(i)。我认为找到 Eigen::Matrix 可能会有所帮助。

关于c++ - 查找 Eigen 上失败的静态断言的来源,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29087248/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com