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 :

Operateurs virtuels


Sujet :

C++

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éprouvé
    Inscrit en
    Avril 2003
    Messages
    159
    Détails du profil
    Informations forums :
    Inscription : Avril 2003
    Messages : 159
    Par défaut Operateurs virtuels
    Bonjour,

    J'ai un classe mère A qui redéfinit l'opérateur <<. Cela me permet d'afficher l'état courant de mon objet. J'ai ensuite une classe B qui dérive de A. Je voudrais pouvoir définir dans B l'opérateur <<. Il faudrait que cette définition de << dans B affiche la même chose que pour A mais avec des infos supplémentaires. Comment puis-je faire ?
    J'espère avoir été assez clair.

    Merci.

  2. #2
    Rédacteur
    Avatar de Laurent Gomila
    Profil pro
    Développeur informatique
    Inscrit en
    Avril 2003
    Messages
    10 651
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2003
    Messages : 10 651
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    ostream& operator << (ostream& os, const B& b)
    {
        return os << static_cast<const A&>(b) << ... ;
    }
    :

    Et si tu veux que ton opérateur << gère correctement le polymorphisme, pense à ça :
    http://c.developpez.com/faq/cpp/?pag..._polymorphique

  3. #3
    Membre chevronné
    Profil pro
    Inscrit en
    Novembre 2003
    Messages
    394
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2003
    Messages : 394
    Par défaut
    La réponse à ta question est dans la FAQ C++.

    Note pour Loulou24 : dans ton article de la FAQ, tu déclares l'opérateur << comme ami
    de la classe. Il n'est pas nécessaire que cela soit systématique. Si toutes les donnée
    sont accessible via des accesseurs, la relation d'amitié est inutile.

  4. #4
    Rédacteur
    Avatar de Laurent Gomila
    Profil pro
    Développeur informatique
    Inscrit en
    Avril 2003
    Messages
    10 651
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2003
    Messages : 10 651
    Par défaut
    Citation Envoyé par VoidSeer
    Note pour Loulou24 : dans ton article de la FAQ, tu déclares l'opérateur << comme ami
    de la classe. Il n'est pas nécessaire que cela soit systématique. Si toutes les donnée
    sont accessible via des accesseurs, la relation d'amitié est inutile.
    Oui bien sûr, je n'ai pas dit que ça devait être systèmatique. Dans la FAQ ça l'est car la fonction Print est privée (comme ça on n'est pas tenté de l'utiliser directement).

  5. #5
    Membre chevronné
    Profil pro
    Inscrit en
    Novembre 2003
    Messages
    394
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2003
    Messages : 394
    Par défaut
    Je ne te fais pas dire ce que tu n'as pas dit
    Mais j'ai rencontré un ingénieur persuadé que les opérateur de flux devait-être amis.
    Dans la littérature, ils sont souvent déclaré comme tel, et cela en devient une habitude.
    Comme j'ai tendance à bannir l'usage de 'friend', sauf cas de force majeure, je me permet
    cette remarque.

  6. #6
    Rédacteur
    Avatar de Laurent Gomila
    Profil pro
    Développeur informatique
    Inscrit en
    Avril 2003
    Messages
    10 651
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2003
    Messages : 10 651
    Par défaut
    Ok

    Effectivement, dans la tête de beaucoup de monde les opérateurs non-membres (et surtout ceux d'injection / extraction vers des flux) sont obligatoirement amis ; ça ne fait donc pas de mal de faire cette remarque.

Discussions similaires

  1. Réponses: 25
    Dernier message: 04/12/2004, 12h06
  2. [langage] l'operateur tr///
    Par March' dans le forum Langage
    Réponses: 4
    Dernier message: 03/03/2003, 21h57
  3. [Turbo Pascal] Limite de la mémoire virtuelle
    Par moon tiger dans le forum Turbo Pascal
    Réponses: 12
    Dernier message: 08/02/2003, 22h30
  4. Existe-t-il un langage de prog "virtuel" en Français
    Par HRS dans le forum Langages de programmation
    Réponses: 4
    Dernier message: 10/06/2002, 18h11
  5. Problème avec la mémoire virtuelle
    Par Anonymous dans le forum CORBA
    Réponses: 13
    Dernier message: 16/04/2002, 16h10

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