gpt4 book ai didi

c++ - 编译时 Eigen 断言错误,错误不明

转载 作者:搜寻专家 更新时间:2023-10-31 01:48:38 24 4
gpt4 key购买 nike

所以我正在尝试创建一个类,它基本上充当与用于分区的特征矩阵的接口(interface),以及一些附加功能。我的数据结构的基本拷贝是:

template <class T>
class DataFile {
public:
typedef Eigen::Matrix<DataType, Eigen::Dynamic, Eigen::Dynamic, Eigen::RowMajor> RMatrix;
DataFile(int inputRows, int inputColumns) {
dataMatrix = RMatrix::Zero(inputRows, inputColumns);
}
inline typename RMatrix::RowXpr getSample(const int row) { return dataMatrix.row(row) }

private:
RMatrix dataMatrix;

这只是对我所做的以及似乎相关的内容的简单介绍。当我使用 Qtcreator 和 MSVC2008 编译我的代码时,我收到以下错误消息:

c:\apis_x64\eigen-eigen-ca142d0540d3\eigen\src/Core/DenseCoeffsBase.h(390) : error C2039: 'THE_BRACKET_OPERATOR_IS_ONLY_FOR_VECTORS__USE_THE_PARENTHESIS_OPERATOR_INSTEAD' : is not a member of 'Eigen::internal::static_assertion<condition>'
with
[
condition=false
]
c:\apis_x64\eigen-eigen-ca142d0540d3\eigen\src/Core/DenseCoeffsBase.h(388) : while compiling class template member function 'float &Eigen::DenseCoeffsBase<Derived,Level>::operator [](__int64)'
with
[
Derived=Eigen::Matrix<float,-1,-1,1>,
Level=1
]
c:\apis_x64\eigen-eigen-ca142d0540d3\eigen\src/Core/DenseCoeffsBase.h(653) : see reference to class template instantiation 'Eigen::DenseCoeffsBase<Derived,Level>' being compiled
with
[
Derived=Eigen::Matrix<float,-1,-1,1>,
Level=1
]
c:\apis_x64\eigen-eigen-ca142d0540d3\eigen\src/Core/util/XprHelper.h(365) : see reference to class template instantiation 'Eigen::DenseCoeffsBase<Derived>' being compiled
with
[
Derived=Eigen::Matrix<float,-1,-1,1>
]
c:\apis_x64\eigen-eigen-ca142d0540d3\eigen\src/Core/DenseBase.h(53) : see reference to class template instantiation 'Eigen::internal::special_scalar_op_base<Derived,Scalar,OtherScalar>' being compiled
with
[
Derived=Eigen::Matrix<float,-1,-1,1>,
Scalar=float,
OtherScalar=float
]
c:\apis_x64\eigen-eigen-ca142d0540d3\eigen\src/Core/MatrixBase.h(65) : see reference to class template instantiation 'Eigen::DenseBase<Derived>' being compiled
with
[
Derived=Eigen::Matrix<float,-1,-1,1>
]
c:\apis_x64\eigen-eigen-ca142d0540d3\eigen\src/Core/PlainObjectBase.h(89) : see reference to class template instantiation 'Eigen::MatrixBase<Derived>' being compiled
with
[
Derived=Eigen::Matrix<float,-1,-1,1>
]
c:\apis_x64\eigen-eigen-ca142d0540d3\eigen\src/Core/Matrix.h(144) : see reference to class template instantiation 'Eigen::PlainObjectBase<Derived>' being compiled
with
[
Derived=Eigen::Matrix<float,-1,-1,1>
]
d:\users\public\documents\myCode\DataFilesV2.h(46) : see reference to class template instantiation 'Eigen::Matrix<_Scalar,_Rows,_Cols,_Options>' being compiled
with
[
_Scalar=float,
_Rows=-1,
_Cols=-1,
_Options=1
]
c:\apis_x64\eigen-eigen-ca142d0540d3\eigen\src/Core/DenseCoeffsBase.h(390) : error C2065: 'THE_BRACKET_OPERATOR_IS_ONLY_FOR_VECTORS__USE_THE_PARENTHESIS_OPERATOR_INSTEAD' : undeclared identifier

d:\users\public\documents\myCode\DataFilesV2.h(46) 引用行 inline typename RMatrix::RowXpr getSample(const int row) { return dataMatrix.row(row) } 在我的代码中。我之前已经能够在我的代码的其他部分完成这项工作,所以我认为这是在调用它。但是,在我调用它的所有时间里,没有使用 [] 或不正确使用 RowXpr。 我有很多代码要处理,所以我不太确定如何找到此错误,并可以就可能出现的问题或我如何找出导致错误的原因提出一些想法。

最佳答案

我最终发现了错误,这正是 Eigen 所说的错误。从数组到特征矩阵的转换,我有一个剩余的 [] 。但问题甚至与错误指向的位置没有关系。我必须检查并注释掉错误指向的位置,直到错误最终消失,我才能推断出代码的哪一部分是错误的真正来源。

关于c++ - 编译时 Eigen 断言错误,错误不明,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17538559/

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