IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage C++ Discussion :

Être récepteur ou émetteur de << ou >>


Sujet :

Langage C++

  1. #1
    Futur Membre du Club
    Homme Profil pro
    Inscrit en
    Octobre 2013
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Octobre 2013
    Messages : 11
    Points : 8
    Points
    8
    Par défaut Être récepteur ou émetteur de << ou >>
    Bonjour,

    J’aimerais modifier une classe gérant des ports série pour pouvoir utiliser les opérateurs << et >>. Ex:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Portserie p(“/dev/tty0”,9600,8,1,’N’,’\n); // Creation de p et ouverture du port 9600 bauds, 8 bits, 1 stop, pas de parité, caractère de fin de trame ‘\n’
     
    P << “Hello ! “; // on envoi des datas sur le port
     
    P >> buff; // on lit une chaîne qui se terminera par ‘\n’
    C’est possible ou pas ?

    Merci.

  2. #2
    Rédacteur/Modérateur


    Homme Profil pro
    Network game programmer
    Inscrit en
    Juin 2010
    Messages
    7 115
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : Canada

    Informations professionnelles :
    Activité : Network game programmer

    Informations forums :
    Inscription : Juin 2010
    Messages : 7 115
    Points : 32 967
    Points
    32 967
    Billets dans le blog
    4
    Pensez à consulter la FAQ ou les cours et tutoriels de la section C++.
    Un peu de programmation réseau ?
    Aucune aide via MP ne sera dispensée. Merci d'utiliser les forums prévus à cet effet.

  3. #3
    Futur Membre du Club
    Homme Profil pro
    Inscrit en
    Octobre 2013
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Octobre 2013
    Messages : 11
    Points : 8
    Points
    8
    Par défaut
    Je pensais que la surcharge de ces opérateur ne concernait que les objets situés à droite de ceux-ci, pas à gauche ?

  4. #4
    Expert éminent
    Homme Profil pro
    Ingénieur développement matériel électronique
    Inscrit en
    Décembre 2015
    Messages
    1 565
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur développement matériel électronique
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Décembre 2015
    Messages : 1 565
    Points : 7 648
    Points
    7 648
    Par défaut
    Dans les 2 cas, l'objet est à gauche de l'opérateur. Mais il est aussi possible de définir une fonction libre qui a deux paramètres.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Portserie& operator<<( Portserie& ps , std::string &str) {
       ... ... ...
       return ps; // nécessaire pour avoir plusieurs << sur une ligne
    }
    Portserie& operator>>( Portserie& ps, std::string &str) {
       ... ... ...
       return ps; ; // nécessaire pour avoir plusieurs >> sur une ligne
    }

  5. #5
    Futur Membre du Club
    Homme Profil pro
    Inscrit en
    Octobre 2013
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Octobre 2013
    Messages : 11
    Points : 8
    Points
    8
    Par défaut
    Merci beaucoup, impeccable, par contre j'ai du faire une petite modification avec l'operateur <<

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Portserie& operator<<( Portserie& ps , std::string str) {
       ... ... ...
       return ps; // nécessaire pour avoir plusieurs << sur une ligne
    }
    Si je passe la chaine par référence j'ai ce message:

    Nom : com.png
Affichages : 142
Taille : 4,2 Ko

    Cdlt

  6. #6
    Expert éminent
    Homme Profil pro
    Ingénieur développement matériel électronique
    Inscrit en
    Décembre 2015
    Messages
    1 565
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur développement matériel électronique
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Décembre 2015
    Messages : 1 565
    Points : 7 648
    Points
    7 648
    Par défaut
    En fait je voulais plutôt écrire : Portserie& operator<<( Portserie& ps , std::string const &str). Mais un passage par valeur est en effet surement mieux ici.

  7. #7
    Rédacteur/Modérateur


    Homme Profil pro
    Network game programmer
    Inscrit en
    Juin 2010
    Messages
    7 115
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : Canada

    Informations professionnelles :
    Activité : Network game programmer

    Informations forums :
    Inscription : Juin 2010
    Messages : 7 115
    Points : 32 967
    Points
    32 967
    Billets dans le blog
    4
    Par défaut
    Ou alors le fix correct serait une référence constante, vu qu'il s'agit de lire la chaîne et non d'y écrire.
    Un copier-coller malheureux de dalfab, mais surtout un copier-coller sans grande critique de ta part..
    Pensez à consulter la FAQ ou les cours et tutoriels de la section C++.
    Un peu de programmation réseau ?
    Aucune aide via MP ne sera dispensée. Merci d'utiliser les forums prévus à cet effet.

  8. #8
    Futur Membre du Club
    Homme Profil pro
    Inscrit en
    Octobre 2013
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Octobre 2013
    Messages : 11
    Points : 8
    Points
    8
    Par défaut
    Du coup sur ma lancée, j’ai intégré l’ouverture du port au constructeur et la fermeture au destructeur et surchargé l’opérateur !
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    Serial com(“/dev/ttyUSB0”);
    if (!com) {
       // erreur
       Return -1;
    }
     
    com << “Bonjour !”;
    com >> rep;
     
    Return 0;
    C’est vraiment propre. Encore merci pour votre aide.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 8
    Dernier message: 26/09/2017, 16h43
  2. [Sources] [UDP] [réseau] émetteur / récepteur multicast
    Par Invité(e) dans le forum Contribuez
    Réponses: 2
    Dernier message: 04/06/2010, 17h06
  3. question (peut-être idiote) sur les vues
    Par LadyArwen dans le forum MS SQL Server
    Réponses: 3
    Dernier message: 26/03/2003, 10h35
  4. Comment être sure que mon appli prenne le focus ?
    Par AmaX dans le forum Composants VCL
    Réponses: 2
    Dernier message: 21/12/2002, 15h00
  5. Réponses: 2
    Dernier message: 20/03/2002, 23h01

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo