gpt4 book ai didi

c++ - block 操作不适用于 Eigen

转载 作者:行者123 更新时间:2023-11-30 04:18:13 27 4
gpt4 key购买 nike

Eigen 上的 block 操作将不起作用。我收到一堆错误,例如:

error: ‘Eigen::Vector4d’ has no member named ‘head’

产生这个错误的代码行是:

outVector.push_back(out.head<3>());

在哪里out是一个 Eigen::Vector4doutVectorstd::vector<Eigen::Vector4d> .

完整的错误输出是:

PortalSpace2.cpp: In member function ‘virtual std::vector<Eigen::Matrix<double, 3, 1> > PortalSpace::PointOfReference::vectorsFromPoint(std::tr1::shared_ptr<Manifold::Point>)’:
PortalSpace2.cpp:73:26: error: ‘Eigen::Vector4d’ has no member named ‘head’
PortalSpace2.cpp:73:34: error: expected primary-expression before ‘)’ token
PortalSpace2.cpp: In member function ‘virtual std::tr1::shared_ptr<Manifold::Point> PortalSpace::PointOfReference::pointFromVector(Eigen::Vector3d)’:
PortalSpace2.cpp:84:24: error: ‘Eigen::Vector4d’ has no member named ‘tail’
PortalSpace2.cpp:85:24: error: ‘Eigen::Vector4d’ has no member named ‘tail’
PortalSpace2.cpp:96:28: error: ‘class PortalSpace::Point’ has no member named ‘tail’
PortalSpace2.cpp:96:49: error: ‘Eigen::Vector4d’ has no member named ‘tail’
PortalSpace2.cpp:97:13: error: expected initializer before ‘<<’ token
PortalSpace2.cpp:98:32: error: ‘y’ was not declared in this scope
PortalSpace2.cpp: In member function ‘virtual void PortalSpace::PointOfReference::move(Eigen::Vector3d)’:
PortalSpace2.cpp:116:13: error: ‘vector’ was not declared in this scope
PortalSpace2.cpp:116:13: note: suggested alternative:
In file included from /usr/include/c++/4.7/vector:65:0,
from PortalSpace2.h:4,
from PortalSpace2.cpp:5:
/usr/include/c++/4.7/bits/stl_vector.h:208:11: note: ‘std::vector’
PortalSpace2.cpp:119:28: error: no match for ‘operator[]’ in ‘((PortalSpace::PointOfReference*)this)->PortalSpace::PointOfReference::position[0]’
PortalSpace2.cpp:120:28: error: no match for ‘operator[]’ in ‘((PortalSpace::PointOfReference*)this)->PortalSpace::PointOfReference::position[0]’
PortalSpace2.cpp:121:24: error: ‘Eigen::Vector4d’ has no member named ‘tail’
PortalSpace2.cpp:122:24: error: ‘Eigen::Vector4d’ has no member named ‘tail’
PortalSpace2.cpp:133:28: error: ‘class PortalSpace::Point’ has no member named ‘tail’
PortalSpace2.cpp:133:49: error: ‘Eigen::Vector4d’ has no member named ‘tail’
PortalSpace2.cpp:134:13: error: expected initializer before ‘<<’ token
PortalSpace2.cpp:135:2: error: ‘coordinates’ was not declared in this scope
PortalSpace2.cpp:135:19: error: ‘y’ was not declared in this scope
PortalSpace2.cpp:140:12: error: ‘Eigen::Matrix4d’ has no member named ‘column’
PortalSpace2.cpp:141:12: error: ‘Eigen::Matrix4d’ has no member named ‘column’
PortalSpace2.cpp:141:26: error: ‘Eigen::Vector4d’ has no member named ‘tail’
PortalSpace2.cpp:142:12: error: ‘Eigen::Matrix4d’ has no member named ‘column’
PortalSpace2.cpp:142:43: error: no match for ‘operator[]’ in ‘((PortalSpace::PointOfReference*)this)->PortalSpace::PointOfReference::position[1]’
PortalSpace2.cpp:142:55: error: no match for ‘operator[]’ in ‘((PortalSpace::PointOfReference*)this)->PortalSpace::PointOfReference::position[2]’
PortalSpace2.cpp:142:67: error: no match for ‘operator[]’ in ‘((PortalSpace::PointOfReference*)this)->PortalSpace::PointOfReference::position[3]’
PortalSpace2.cpp:143:12: error: ‘Eigen::Matrix4d’ has no member named ‘column’
PortalSpace2.cpp:143:34: error: ‘Eigen::Matrix4d’ has no member named ‘column’
PortalSpace2.cpp:143:60: error: ‘Eigen::Matrix4d’ has no member named ‘column’
PortalSpace2.cpp:149:23: error: expected primary-expression before ‘.’ token
PortalSpace2.cpp:150:31: error: expected primary-expression before ‘<<’ token
PortalSpace2.cpp:156:14: error: expected primary-expression before ‘.’ token
PortalSpace2.cpp:157:31: error: expected primary-expression before ‘<<’ token
PortalSpace2.cpp:162:14: error: expected primary-expression before ‘.’ token
PortalSpace2.cpp:163:31: error: expected primary-expression before ‘<<’ token
In file included from /usr/include/eigen2/Eigen/Core:137:0,
from /usr/include/eigen2/Eigen/Dense:1,
from Manifold.h:7,
from PortalSpace2.h:7,
from PortalSpace2.cpp:5:
/usr/include/eigen2/Eigen/src/Core/Product.h: In instantiation of ‘const typename Eigen::ProductReturnType<Derived, OtherDerived>::Type Eigen::MatrixBase<Derived>::operator*(const Eigen::MatrixBase<OtherDerived>&) const [with OtherDerived = Eigen::Matrix<double, 4, 4>; Derived = Eigen::Matrix<double, 3, 3>; typename Eigen::ProductReturnType<Derived, OtherDerived>::Type = Eigen::Product<const Eigen::Matrix<double, 3, 3>&, const Eigen::Matrix<double, 4, 4>&, 0>]’:
PortalSpace2.cpp:170:20: required from here
/usr/include/eigen2/Eigen/src/Core/Product.h:297:3: error: ‘INVALID_MATRIX_PRODUCT’ is not a member of ‘Eigen::ei_static_assert<false>’
In file included from /usr/include/eigen2/Eigen/Core:125:0,
from /usr/include/eigen2/Eigen/Dense:1,
from Manifold.h:7,
from PortalSpace2.h:7,
from PortalSpace2.cpp:5:
/usr/include/eigen2/Eigen/src/Core/Assign.h: In instantiation of ‘Derived& Eigen::MatrixBase<Derived>::lazyAssign(const Eigen::MatrixBase<OtherDerived>&) [with OtherDerived = Eigen::Matrix<double, 3, 4, 2, 3, 4>; Derived = Eigen::Matrix<double, 4, 4>]’:
/usr/include/eigen2/Eigen/src/Core/Assign.h:447:123: required from ‘static Derived& Eigen::ei_assign_selector<Derived, OtherDerived, false, false>::run(Derived&, const OtherDerived&) [with Derived = Eigen::Matrix<double, 4, 4>; OtherDerived = Eigen::Matrix<double, 3, 4, 2, 3, 4>]’
/usr/include/eigen2/Eigen/src/Core/Matrix.h:554:87: required from ‘Eigen::Matrix<_Scalar, _Rows, _Cols, _Options, _MaxRows, _MaxCols>& Eigen::Matrix<_Scalar, _Rows, _Cols, _Options, _MaxRows, _MaxCols>::_set_noalias(const Eigen::MatrixBase<OtherDerived>&) [with OtherDerived = Eigen::Matrix<double, 3, 4, 2, 3, 4>; _Scalar = double; int _Rows = 4; int _Cols = 4; int _Options = 2; int _MaxRows = 4; int _MaxCols = 4; Eigen::Matrix<_Scalar, _Rows, _Cols, _Options, _MaxRows, _MaxCols> = Eigen::Matrix<double, 4, 4>]’
/usr/include/eigen2/Eigen/src/Core/Matrix.h:538:94: required from ‘void Eigen::Matrix<_Scalar, _Rows, _Cols, _Options, _MaxRows, _MaxCols>::_set_selector(const OtherDerived&, const Eigen::ei_meta_true&) [with OtherDerived = Eigen::Product<const Eigen::Matrix<double, 3, 3>&, const Eigen::Matrix<double, 4, 4>&, 0>; _Scalar = double; int _Rows = 4; int _Cols = 4; int _Options = 2; int _MaxRows = 4; int _MaxCols = 4]’
/usr/include/eigen2/Eigen/src/Core/Matrix.h:533:7: required from ‘Eigen::Matrix<_Scalar, _Rows, _Cols, _Options, _MaxRows, _MaxCols>& Eigen::Matrix<_Scalar, _Rows, _Cols, _Options, _MaxRows, _MaxCols>::_set(const Eigen::MatrixBase<OtherDerived>&) [with OtherDerived = Eigen::Product<const Eigen::Matrix<double, 3, 3>&, const Eigen::Matrix<double, 4, 4>&, 0>; _Scalar = double; int _Rows = 4; int _Cols = 4; int _Options = 2; int _MaxRows = 4; int _MaxCols = 4; Eigen::Matrix<_Scalar, _Rows, _Cols, _Options, _MaxRows, _MaxCols> = Eigen::Matrix<double, 4, 4>]’
/usr/include/eigen2/Eigen/src/Core/Matrix.h:283:24: required from ‘Eigen::Matrix<_Scalar, _Rows, _Cols, _Options, _MaxRows, _MaxCols>& Eigen::Matrix<_Scalar, _Rows, _Cols, _Options, _MaxRows, _MaxCols>::operator=(const Eigen::MatrixBase<OtherDerived>&) [with OtherDerived = Eigen::Product<const Eigen::Matrix<double, 3, 3>&, const Eigen::Matrix<double, 4, 4>&, 0>; _Scalar = double; int _Rows = 4; int _Cols = 4; int _Options = 2; int _MaxRows = 4; int _MaxCols = 4; Eigen::Matrix<_Scalar, _Rows, _Cols, _Options, _MaxRows, _MaxCols> = Eigen::Matrix<double, 4, 4>]’
PortalSpace2.cpp:170:20: required from here
/usr/include/eigen2/Eigen/src/Core/Assign.h:428:3: error: ‘YOU_MIXED_MATRICES_OF_DIFFERENT_SIZES’ is not a member of ‘Eigen::ei_static_assert<false>’
make: *** [all] Error 1

那里可能还有几个不相关的编译器错误,但我会在到达那里时处理这些错误。

最佳答案

看起来你正在使用 eigen2 而你的代码期待 eigen3 因为函数 head() 在 eigen2 中不存在(它是称为 start())。

关于c++ - block 操作不适用于 Eigen,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16553906/

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