slt à toute la communauté,
beh voilà j'ai un problème pas très simple. Dans le cadre d'un project j'ai écris une classe défini à peu près comme suit:
j'ai aussi défini une classe iterator pour itérer sur mes éléments avec les fonctions:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11 class Scan { private: std::vector< LaserRowSet > pointList; //!< stores all the points unsigned int pointCount; //!< buffers the number of points bool pointMemoryResponsability; public: Scan(TimeIndex t); void add(Point *point, unsigned int laserRow=0, float yaw=0); }
.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 iterator begin(); //!< get Iterator that points to the first Point, i.e. the first Point in the first laser row iterator end();
Je peux donc ajouter des points dans ma classe en faisant tout simplement:
Maintenant je veux afficher tous les points contenus dans mon objet scan, pour cela je fais:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 Scan s1(0); Point p1(2,2,2); s1.add(&p1, 5);
ca marche à merveille. Le problème est, je veux en fait utiliser boost_foreach, mais ca na marche pas:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 Scan::iterator s1it = s1.begin(); for (s1it = s1.begin(); s1it != s1.end(); s1it++){ Point *pt = *s1it; cout << "Point:" << *pt; ptCount++; }
Je n'ai vraiment pas grande idée où sa coince. Quelqu'un m'a parlé d'iterator adaptator mais je n'ai aucune idée de comment on l'utilise.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 BOOST_FOREACH(Point* pt, s1){ cout << "Point:" << *pt; }
Je travaille avec Eclipse sous linux et voilà l'érreur que j'ai:
J'attends impatienment vos suggestions et merci d'avance.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 Scan.cpp:201: instantiated from here /usr/include/boost/range/const_iterator.hpp:36: error: no type named const_iterator in class Scan /usr/include/boost/foreach.hpp: In function typename boost::foreach_detail_::foreach_reference<T, C>::type boost::foreach_detail_::deref(const boost::foreach_detail_::auto_any_base&, boost::foreach_detail_::type2type<T, C>*) [with T = Scan, C = mpl_::bool_<false>]: Scan.cpp:201: instantiated from here /usr/include/boost/foreach.hpp:636: error: invalid initialization of non-const reference of type Point*& from a temporary of type Point* make[1]: Leaving directory `/home/simo/code/DataContainers3D' make[1]: *** [debug/Scan.o] Error 1 make: *** [debug] Error 2
PS: désolé des quelques fautes, j'écris avec clavier allemand.
Partager