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 :

[Design] Hériter de iostream


Sujet :

Langage C++

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    199
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2009
    Messages : 199
    Par défaut [Design] Hériter de iostream
    Bonjour,

    Je dois réaliser une classe pour échanger des donnés avec un module externe (lecteur RFID) branché sur un port USB, le tout au travers d'un protocole série.

    Pour cela je pensais faire une classe serialstream, qui à la manière de fstream et stringstream, hériterais de iostream. Apparement il faudrait aussi créer une classe serialbuf qui hériterais de streambuf.
    Ou dois-je juste écrire ma classe avec une interface proche de iostream (auquel cas je perds plusieurs avantages)?

    Que pensez-vous de tout ça?

    Merci d'avance!

    P.S: C'est surtout une question de design, puisque l'implémentation principale est déjà fonctionelle, mais j'essaie d'améliorer l'interface.

  2. #2
    Membre émérite
    Avatar de Ekleog
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2012
    Messages
    448
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2012
    Messages : 448
    Par défaut
    Hériter de streambuf est la bonne façon de faire.
    Puis créer un i/ostream et lui changer son streambuf pour le tien.

    Edit : En me relisant, je me trouve bien trop affirmatif. N'hésitez pas à me contredire si vous pensez qu'une autre façon est meilleure !

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    199
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2009
    Messages : 199
    Par défaut
    Je suis d'accord avec toi pour hériter du streambuf, par contre pourquoi ne pas non plus hériter de iostream aussi?

    Ca irait dans la logique des choses non? Sinon j'ai l'impression que ça ne serait fait qu'à moitié? Et au moins je peux ajouter des méthodes qui me serait propre?

  4. #4
    Membre émérite
    Avatar de Ekleog
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2012
    Messages
    448
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2012
    Messages : 448
    Par défaut
    Un bon exemple est disponible ici : http://stackoverflow.com/questions/1...-or-equivalent
    (première réponse, en plus c'est en français ! par contre il faudrait implémenter un buffer mieux que ça, pour garder des performances)

    En fait, l'héritage de i/ostream ne fait rien d'autre que de définir le streambuf.

    Par contre, il ne faut normalement pas définir de nouvelles méthodes.
    Qu'est-ce que tu penserais ajouter ?

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    199
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2009
    Messages : 199
    Par défaut
    Par exemple, qui dérive de iostream:

    - fstream: définis les fonction open(), is_open()...

    - stringstream: définis str()

    Ces fonctions leurs sont propres non?

  6. #6
    Membre émérite
    Avatar de Ekleog
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2012
    Messages
    448
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2012
    Messages : 448
    Par défaut
    Oui, c'est (pour autant que j'en sache) le seul cas où la redéfinition est avantageuse.
    Ici, les trois seules fonctions intéressantes à redéfinir seraient le constructeur (qui prendrait le port), une fonction open(port) et une fonction close(). (je ne compte pas le destructeur)
    Si tu vois d'autres fonctions à redéfinir, et qu'elles peuvent apporter un bénéfice net, alors n'hésites pas !
    En fait, en niant en bloc, j'avais peur que tu implémente une fonction comme readXXX dans le stream, ce qui serait l'erreur à ne pas commettre.

Discussions similaires

  1. Réponses: 4
    Dernier message: 24/02/2009, 12h06
  2. [power designer et Sybase] trigger
    Par mr_qno dans le forum Sybase
    Réponses: 4
    Dernier message: 12/07/2006, 18h32
  3. Réponses: 3
    Dernier message: 09/02/2003, 01h09
  4. Désigner une variable avec une variable?
    Par littleman dans le forum Paradox
    Réponses: 4
    Dernier message: 12/08/2002, 11h21

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