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

C++ Discussion :

Setter et cin


Sujet :

C++

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre très actif
    Homme Profil pro
    Développeur de jeux vidéo
    Inscrit en
    Mai 2014
    Messages
    227
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Développeur de jeux vidéo
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2014
    Messages : 227
    Par défaut Setter et cin
    Bonjour à tous ! Actuellement j'ai codé un petit system qui enregistre des livres, les trie etc...
    Comme je n'ai pas beaucoup de temps et que j'ai besoin d'avoir rapidement un logiciel fonctionnel, les enregistrement de livres se font via la console bien que plus tard cela se fera via une GUI.
    J’aimerais juste savoir si il est possible de passé en argument à un setter les données récupéré via std::cin sans passé par une variable. C'est à dire que j'aimerais que ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
     
    Book book;
    std::string name;
     
    std::cout << "Entrez sont nom : ";
    std::getline( std::cin, name );
    book.setName(name);
    ce transforme en quelque chose comme ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
     
    Book book;
     
    std::cout << "Entrez sont nom : ";
    book.setName(?std::cin?);
    Je n'ai jamais fait de choses comme ceci mais pour une fois j'aimerais évité d'avoir des variables un peu useless qui ne servent qu'une fois.
    Je ne sais pas si c'est possible mais merci de m'indiquer comment faire ci ça l'est et bien sur, l'entrée de l'utilisateur peut contenir des espaces.

    Je vous remercie !

    PS : J'ai chercher sur Google et je n'est pas trouvé ce qui m'intéressé

  2. #2
    Expert éminent
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 395
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 395
    Par défaut
    Sans passer par une variable, je ne crois pas, mais tu peux toujours cacher cela dans un wrapper:
    Code C++ : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    std::string MyGetLine()
    {
    	std::string line;
    	std::getline(std::cin, line);
    	return line;
    }
    Code C++ : Sélectionner tout - Visualiser dans une fenêtre à part
    book.setName(MyGetLine());
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

  3. #3
    Membre très actif
    Homme Profil pro
    Développeur de jeux vidéo
    Inscrit en
    Mai 2014
    Messages
    227
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Développeur de jeux vidéo
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2014
    Messages : 227
    Par défaut
    J'avais pensé à ça ( D'ailleurs google ma donner la même réponse :p ) mais je cherche quand même si c'est possible sans wrapper, sans variables, sans rien x). Mais si tu me dit qu'il n'est vraiment pas possible de le faire alors sujet résolue ?

  4. #4
    Membre éprouvé
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    2 766
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2004
    Messages : 2 766
    Par défaut
    Tu es obligé de le faire en deux étapes parce qu'il y a une encapsulation qui bloque la libre transmission de la valeur lue dans le flux au membre de Book qui doit contenir le nom.
    Tu ne peux pas demander le beurre ou l'argent du beurre.

    Ou alors, ta classe gérant l'IHM peut être rendue amie de la classe Book. Et dans ce cas là, tu pourras utiliser directement l'opérateur >>.

  5. #5
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2016
    Messages
    15
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Maroc

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2016
    Messages : 15
    Par défaut
    Si Book::name est public tu pourras faire std::cin directement dessus, mais dans ce cas tu va te priver des avantages qu'offrent les getters/setters (validation ou lecture/écriture seule par exemple) :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    Book book;
     
    std::cout << "Entrez sont nom : ";
    std::cin >> book.name;
    Il n'y a pas (trop) de mal à utiliser des variables temporaires à mon avis. Tu pourrais par exemple l'appeler "input" au lieu de "name" et l'utiliser à chaque fois que tu as besoin de lire de l'input.

  6. #6
    Membre très actif
    Homme Profil pro
    Développeur de jeux vidéo
    Inscrit en
    Mai 2014
    Messages
    227
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Développeur de jeux vidéo
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2014
    Messages : 227
    Par défaut
    Oui sauf que là tu brise une régle de base mais des plus important, aucun attribut ne doit être public. Je trouve que c'est le mal moi :p
    Finalement je suis passé sous GUI donc sujet résolue, et c'était juste petite question pour voir si c'était possible proprement, donc je vais pas passé par des bidouillages x).

    Merci de vos réponses

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

Discussions similaires

  1. [VB.NET] Génération automatique Property (getter / setter)
    Par Husqvarna dans le forum Windows Forms
    Réponses: 7
    Dernier message: 23/07/2020, 11h55
  2. Le buffer clavier avec cin, et getch()
    Par Info420 dans le forum SL & STL
    Réponses: 1
    Dernier message: 06/12/2004, 12h45
  3. STL cin, cout ...
    Par oxor3 dans le forum SL & STL
    Réponses: 11
    Dernier message: 29/08/2004, 16h22
  4. SNMP (setter une variable???)
    Par racel dans le forum Développement
    Réponses: 2
    Dernier message: 07/06/2004, 11h48
  5. configuration getter & setter
    Par otb82 dans le forum Eclipse Java
    Réponses: 4
    Dernier message: 15/10/2003, 15h53

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