Error struct _Rb_tree_iterator while compiling

classic Classic list List threaded Threaded
3 messages Options
Reply | Threaded
Open this post in threaded view
|

Error struct _Rb_tree_iterator while compiling

mcb9216
Hello, I have this error while doing the step "make -j4". Please help me, I really don't what else I could do

-- Info :
--   Version : 0.11.2
--   CMAKE_INSTALL_PREFIX = /usr/local
--   CMAKE_BUILD_TYPE = Release
--   BUILD_APP = ON
--   BUILD_TOOLS = ON
--   BUILD_EXAMPLES = ON
--   BUILD_SHARED_LIBS = ON
--   CMAKE_CXX_FLAGS =  -fmessage-length=0  -Wno-deprecated -fopenmp
--   With OpenCV 3 xfeatures2d module (SIFT/SURF/BRIEF/FREAK) = YES (License: Non commercial)
--   With Freenect             = YES (License: Apache v2 and/or GPLv2)
--   With OpenNI2              = YES (License: Apache v2)
--   With Freenect2            = YES (License: Apache v2 and/or GPLv2)
--   With dc1394               = YES (License: LGPL)
--   With FlyCapture2/Triclops = NO (Point Grey SDK not found)
--   With TORO                 = YES (License: Creative Commons [Attribution-NonCommercial-ShareAlike])
--   With g2o                  = NO (g2o not found)
--   With GTSAM                = NO (GTSAM not found)
--   With VERTIGO              = YES (License: GPLv3)
--   With cvsba                = NO (cvsba not found)
--   With Qt4                  = YES (License: Open Source or Commercial)
-- --------------------------------------------
-- Configuring done
-- Generating done
-- Build files have been written to: /home/cristina/rtabmap/build
cristina@cristina-H81M-H:~/rtabmap/build$ make
[  6%] Built target rtabmap_utilite
[  6%] Built target res_tool
[  7%] Building CXX object corelib/src/CMakeFiles/rtabmap_core.dir/OdometryF2M.cpp.o
/home/cristina/rtabmap/corelib/src/OdometryF2M.cpp: In member function ‘virtual rtabmap::Transform rtabmap::OdometryF2M::computeTransform(rtabmap::SensorData&, const rtabmap::Transform&, rtabmap::OdometryInfo*)’:
/home/cristina/rtabmap/corelib/src/OdometryF2M.cpp:308:15: error: no match for ‘operator=’ (operand types are ‘std::multimap<int, cv::Point3_<float> >::iterator {aka std::_Rb_tree_iterator<std::pair<const int, cv::Point3_<float> > >}’ and ‘void’)
          iter = mapPoints.erase(iter);
               ^
/home/cristina/rtabmap/corelib/src/OdometryF2M.cpp:308:15: note: candidate is:
In file included from /usr/include/c++/4.8/map:60:0,
                 from /home/cristina/rtabmap/corelib/src/../include/rtabmap/core/OdometryInfo.h:31,
                 from /home/cristina/rtabmap/corelib/src/OdometryF2M.cpp:28:
/usr/include/c++/4.8/bits/stl_tree.h:157:12: note: std::_Rb_tree_iterator<std::pair<const int, cv::Point3_<float> > >& std::_Rb_tree_iterator<std::pair<const int, cv::Point3_<float> > >::operator=(const std::_Rb_tree_iterator<std::pair<const int, cv::Point3_<float> > >&)
     struct _Rb_tree_iterator
            ^
/usr/include/c++/4.8/bits/stl_tree.h:157:12: note:   no known conversion for argument 1 from ‘void’ to ‘const std::_Rb_tree_iterator<std::pair<const int, cv::Point3_<float> > >&’
/home/cristina/rtabmap/corelib/src/OdometryF2M.cpp:309:29: error: no match for ‘operator=’ (operand types are ‘std::multimap<int, cv::Mat>::iterator {aka std::_Rb_tree_iterator<std::pair<const int, cv::Mat> >}’ and ‘void’)
          iterMapDescriptors = mapDescriptors.erase(iterMapDescriptors);
                             ^
/home/cristina/rtabmap/corelib/src/OdometryF2M.cpp:309:29: note: candidate is:
In file included from /usr/include/c++/4.8/map:60:0,
                 from /home/cristina/rtabmap/corelib/src/../include/rtabmap/core/OdometryInfo.h:31,
                 from /home/cristina/rtabmap/corelib/src/OdometryF2M.cpp:28:
/usr/include/c++/4.8/bits/stl_tree.h:157:12: note: std::_Rb_tree_iterator<std::pair<const int, cv::Mat> >& std::_Rb_tree_iterator<std::pair<const int, cv::Mat> >::operator=(const std::_Rb_tree_iterator<std::pair<const int, cv::Mat> >&)
     struct _Rb_tree_iterator
            ^
/usr/include/c++/4.8/bits/stl_tree.h:157:12: note:   no known conversion for argument 1 from ‘void’ to ‘const std::_Rb_tree_iterator<std::pair<const int, cv::Mat> >&’
/home/cristina/rtabmap/corelib/src/OdometryF2M.cpp:310:23: error: no match for ‘operator=’ (operand types are ‘std::multimap<int, cv::KeyPoint>::iterator {aka std::_Rb_tree_iterator<std::pair<const int, cv::KeyPoint> >}’ and ‘void’)
          iterMapWords = mapWords.erase(iterMapWords);
                       ^
/home/cristina/rtabmap/corelib/src/OdometryF2M.cpp:310:23: note: candidate is:
In file included from /usr/include/c++/4.8/map:60:0,
                 from /home/cristina/rtabmap/corelib/src/../include/rtabmap/core/OdometryInfo.h:31,
                 from /home/cristina/rtabmap/corelib/src/OdometryF2M.cpp:28:
/usr/include/c++/4.8/bits/stl_tree.h:157:12: note: std::_Rb_tree_iterator<std::pair<const int, cv::KeyPoint> >& std::_Rb_tree_iterator<std::pair<const int, cv::KeyPoint> >::operator=(const std::_Rb_tree_iterator<std::pair<const int, cv::KeyPoint> >&)
     struct _Rb_tree_iterator
            ^
/usr/include/c++/4.8/bits/stl_tree.h:157:12: note:   no known conversion for argument 1 from ‘void’ to ‘const std::_Rb_tree_iterator<std::pair<const int, cv::KeyPoint> >&’
make[2]: *** [corelib/src/CMakeFiles/rtabmap_core.dir/OdometryF2M.cpp.o] Error 1
make[1]: *** [corelib/src/CMakeFiles/rtabmap_core.dir/all] Error 2
make: *** [all] Error 2
Reply | Threaded
Open this post in threaded view
|

Re: Error struct _Rb_tree_iterator while compiling

matlabbe
Administrator
Hi,

Thx for reporting, it is a compatibility error with C++03, this is fixed in this commit.

cheers,
Mathieu
Reply | Threaded
Open this post in threaded view
|

Re: Error struct _Rb_tree_iterator while compiling

mcb9216
Thank you Mathieu, the code is already running in my pc ^^