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 :

Surcharger l'opérateur >>


Sujet :

C++

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    560
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 560
    Points : 71
    Points
    71
    Par défaut Surcharger l'opérateur >>
    Bonjour,

    Je voudrais savoir si il est capable de surcharger l'opérateur >> pour faire ce que l'on veut. C'est a dire comme ce qui est fait sur OpenCV pouvoir echangre des images.

    Une classe BB qui a un operateur << je puisse faire :

    Et que ma classe traite l'image selon mes besoins.

    Je vus que des surcharges de l'opérateur >> sur le flux ostream mais pas sur autrechose.

    Quelqu'un me dire si je peux faire ca en cpp?

  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
    Par défaut
    Salut,

    oui tu peux surcharger tous les opérateurs sauf le . pour tout type non-trivial/primitif.
    http://cpp.developpez.com/faq/cpp/?p...e-d-operateurs
    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
    Membre régulier
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    560
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 560
    Points : 71
    Points
    71
    Par défaut
    merci pour la réponse.
    La encore l'exemple de l'opérateur<< est pour le flux d'affichage.

    J'ai fait un exemple:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    class BB:
    {
    ....
    friend void operator<<(class BB, int i) 
     
    }
     
    void operator<<(class BB,int i)
    {
    BB.a = i;
    }
    Ce ode ne fonctionne pas ...

  4. #4
    Expert éminent sénior

    Avatar de dragonjoker59
    Homme Profil pro
    Software Developer
    Inscrit en
    Juin 2005
    Messages
    2 031
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Software Developer
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2005
    Messages : 2 031
    Points : 11 388
    Points
    11 388
    Billets dans le blog
    11
    Par défaut
    Euh, il est bizarre ton code... Pourquoi tu rajoutes "class" lors de la déclaration d'une variable?
    Tu n'es pas en C hein, la déclaration d'une classe (ou struct, ou enum...) définit un type, et plus uniquement un symbole comme c'était le cas en C.
    Tu peux donc faire ceci:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    class B
    {
      ...
    };
     
    B myB;
    ...
    Aussi, tes déclarations de fonctions sont fausses, la déclaration correcte ressemblerait à ceci:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    BB operator<<( BB & bb, int i );
    Et là, ça devrait mieux passer.

    Par contre, reste le problème du bien fondé de la chose, surtout dans le cas d'utilisation que tu nous montres.
    Les opérateurs << et >> sont utilisés pour 2 choses, en général: le décalage de bits, ou les opérations de flux.
    Là ton cas d'utilisation n'est ni l'un, ni l'autre et est du coup contre intuitif, et risque d'induire en erreur les utilisateurs de ta classe.
    Si vous ne trouvez plus rien, cherchez autre chose...

    Vous trouverez ici des tutoriels OpenGL moderne.
    Mon moteur 3D: Castor 3D, presque utilisable (venez participer, il y a de la place)!
    Un projet qui ne sert à rien, mais qu'il est joli (des fois) : ProceduralGenerator (Génération procédurale d'images, et post-processing).

Discussions similaires

  1. [C#] Tri d'objet et surcharge d'opérateur
    Par Royd938 dans le forum Windows Forms
    Réponses: 6
    Dernier message: 17/12/2007, 00h26
  2. Petit probléme de surcharge d'opérateur .
    Par Clad3 dans le forum C++
    Réponses: 20
    Dernier message: 11/04/2005, 20h15
  3. Problème de surcharge d'opérateurs
    Par Hell dans le forum C++
    Réponses: 17
    Dernier message: 17/01/2005, 16h01
  4. Cumul de surcharges d'opérateurs
    Par Nats dans le forum C++
    Réponses: 2
    Dernier message: 11/10/2004, 13h37
  5. [VB .NET] Surcharge d'opérateur
    Par Franckintosh dans le forum VB.NET
    Réponses: 2
    Dernier message: 07/09/2004, 19h05

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