• # Retourner une copie ou une référence ?

    Posté par . En réponse au message conteneur en retour de fonction. Évalué à 6. Dernière modification le 30 décembre 2021 à 20:56.

    Salut,
    Alors je ne suis pas expert mais je dirais que le problème vient du fait que getvect renvoie une copie du vector de Foo. Dans la déclaration de la boucle la fonction getvect est appelé et renvoie alors un nouveau vector, la fonction begin est alors appelé sur celui-ci puis le vector nouvellement crée est détruit et l'itérateur est sauvegardé dans la variable it, sauf que le conteneur étant détruit it pointe sur une zone mémoire au contenu disons aléatoire.

    Pour que cela fonctionne il faudrait renvoyer une référence sur le vector, donc:

     std::vector<int>& getvect()
     {
     return i;
     }