2010-10-10 5 views
0

J'ai ceci:itérateur pointeur ou référence - erreur

//function definition 
//Point and Range are classes made of 2 ints 
Point barycenter_of_vector_in_range(vector<cv::Point> &points, cv::Range range); 

//In other place... 
vector<vector<Point> > tracks_; //it has some content 
for (vector< vector<Point> >::const_iterator track = tracks_.begin(); track != tracks_.end(); track++) { 

    Point barycenter = barycenter_of_vector_in_range(&(*track), Range(0, track->size())); //Compile ERROR 
} 

Je me demande pourquoi cela ne fonctionne pas? J'obtenir "initialisation non valide de type referenceof ..."

Toute aide serait très apprécié

Merci

Répondre

3

*track est une référence à const vector<Point>, si vous avez deux problèmes:

1) Vous essayez de passer un pointeur vers barycenter_of_vector_in_range, qui ne prend pas de pointeur.

2) C'est const, et barycenter_of_vector_in_range prend une référence non-const.

+0

+1 J'étais sur le point de frapper 'post' avec à peu près la même réponse. – sellibitze

+0

Merci! J'ai fait la fonction pour accepter const et * points plutôt que & points;) – nacho4d

+0

@ nacho4d: ou la fonction pourrait prendre une référence const, et vous pouvez passer '' track '. –

0

vous passez un pointeur vers un vecteur de points au lieu du vecteur lui-même (dont le compilateur prend la référence implicitement)

Questions connexes