2013-05-14 2 views
1

Eigen에서 블록 작업이 작동하지 않습니다. 내가 좋아하는 오류의 무리 받고 있어요 :Eigen에서 블록 작업이 작동하지 않습니다.

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

이 오류를 생성하는 코드 줄 것은 : outEigen::Vector4doutVector입니다

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

std::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 

,하지만 난 거기에 도착했을 때 나는 그 작업을합니다 :

전체 오류 출력이다.

답변

2

코드가 (이 start()를 불렀다) eigen2에 존재하지 않는 기능 head() 이후 eigen3을 기대하는 동안 eigen2을 사용하는 것 같다.

+0

꼬리가 end()라고 했습니까? – DanielLC

+0

정확하게, 모든 API 변경 사항은 요약되어 있습니다 [there] (http://eigen.tuxfamily.org/dox-devel/Eigen2ToEigen3.html) – ggael

+0

제 메이크 파일은 -I/usr/include/eigen2라고 말합니다. – DanielLC

관련 문제