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++

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    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
    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 153
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : Canada

    Informations professionnelles :
    Activité : Network game programmer

    Informations forums :
    Inscription : Juin 2010
    Messages : 7 153
    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 éclairé
    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
    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 confirmé

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

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

    Informations forums :
    Inscription : Juin 2005
    Messages : 2 033
    Billets dans le blog
    12
    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