Partage
  • Partager sur Facebook
  • Partager sur Twitter

comprendre un message d'erreur avec const

C++

Sujet résolu
    13 octobre 2018 à 14:36:54

    Bonjour

    lorsque je fais cela :

    ostream_iterator<char> it(cout,", ");
        for_each(texte_crypte.begin(),texte_crypte.end(),[it](char c){*it=c;});

    j'ai un message d'erreur :

    |error: passing 'const std::ostream_iterator<char>' as 'this' argument discards qualifiers [-fpermissive]|

    alors que si j'ajoute l'esperluette & dans la capture [], le problème se résoud.

    Pourquoi cela ? alors que me variable it n'est pas déclarée comme un const ?

    Merci

    EN fait, non, la compilation passe, mais rien ne s'affiche à l'écran par contre alors qu'il devrait y avoir un affichage avec délimiteur

    -
    Edité par pseudo-simple 13 octobre 2018 à 14:49:07

    • Partager sur Facebook
    • Partager sur Twitter
      13 octobre 2018 à 14:42:05

      toute variable capturée par valeur dans une lambda est const par défaut.

      Pour modifier une variable dans une lambda, soit il faut capturer une référence, soit mettre explicitement mutable la lambda.

      Au passage, std::copy serait beaucoup plus adapté que std::for_each ici.

      • Partager sur Facebook
      • Partager sur Twitter
        13 octobre 2018 à 14:50:03

        Désolé, ça marche en fait.

        Merci pour le tuyau sur le const, je ne savais pas que c'était ainsi

        -
        Edité par pseudo-simple 13 octobre 2018 à 14:51:44

        • Partager sur Facebook
        • Partager sur Twitter

        comprendre un message d'erreur avec const

        × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
        × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
        • Editeur
        • Markdown