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 :

un petit coup de pouce svp ;)


Sujet :

C++

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    74
    Détails du profil
    Informations personnelles :
    Âge : 49
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2005
    Messages : 74
    Points : 29
    Points
    29
    Par défaut un petit coup de pouce svp ;)
    bonsoir tout le monde , excusez du derangement mais en fait

    j'ai du rendre un exercice en c++ a mon prof aujourd hui

    tout fonctionne nickel , sauf que , je ne comprends pas comment

    ca se fait que quand je mets l'opérateur d affectation de ma classe Billet

    en private , malgré tout j arrive encore a faire des choses du genre :

    EuroB5 b1;
    EuroB5 b2=b1;
    cout<<b2; // pour afficher le billet a l'écran

    il me semblait pourtant que quand on mettait un operateur d'affectation

    en private dans une classe,que l'on ne pouvait plus l'utiliser

    voici mon code , si vous savez jetez un oeil , je vous en remercie

    d'avance

    PS : je le mets en lien , pour ne pas flooder le forum , merci d'avance

    http://perso.latribu.com/softstar/newportefeuille.cpp

  2. #2
    Expert éminent
    Avatar de Swoög
    Profil pro
    Inscrit en
    Janvier 2003
    Messages
    6 045
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France

    Informations forums :
    Inscription : Janvier 2003
    Messages : 6 045
    Points : 8 339
    Points
    8 339
    Par défaut
    Salut !

    quand tu fais
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    EuroB5 b1;
    EuroB5 b2=b1;
    Ce n'est pas l'opérateur d'affectation qui est appelé pour b2 (la syntaxe est trompeuse) c'est en fait le constructeur par recopie qui est appellé comme si tu faisais :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    EuroB5 b1;
    EuroB5 b2(b1);
    Rédacteur "éclectique" (XML, Cours PHP, Cours JavaScript, IRC, Web...)
    Les Règles du Forum - Mon Site Web sur DVP.com (Développement Web, PHP, (X)HTML/CSS, SQL, XML, IRC)
    je ne répondrai à aucune question technique via MP, MSN ou Skype : les Forums sont là pour ça !!! Merci de me demander avant de m'ajouter à vos contacts sinon je bloque !
    pensez à la balise [ code ] (bouton #) et au tag (en bas)

  3. #3
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    74
    Détails du profil
    Informations personnelles :
    Âge : 49
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2005
    Messages : 74
    Points : 29
    Points
    29
    Par défaut ahhh ok ;)
    ahh ok

    donc,si je comprends bien

    pour empecher l'operateur d'affectation

    il faut egalement que je mette le constructeur par copie

    de Billet en private alors ?

    mais j'avais essayé ca,mais si je met mon constructeur par copie de Billet

    en private,alors,ma fonction Addbillet() dans la classe portefeuille ne veut

    plus fonctionner

    merci de m'eclairer sur le sujet

  4. #4
    Expert éminent
    Avatar de Swoög
    Profil pro
    Inscrit en
    Janvier 2003
    Messages
    6 045
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France

    Informations forums :
    Inscription : Janvier 2003
    Messages : 6 045
    Points : 8 339
    Points
    8 339
    Par défaut
    Il y a une différence entre Constructeur par copie, et affectation, le constructeur de copie ne s'utilise qu'au moment de la création de l'instance, exemple, si tu fais ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    EuroB5 b1;
    EuroB5 b2;
    b2 = b1;
    tu auras une erreur de compilation car l'opérateur d'affectation est privé...

    ensuite, est-ce que tu as vraiment besoin de rendre ta classe billet non copiable ?
    Si oui, alors il faut mettre les deux (opérateur = et constructeur par copie) en privé, sinon, il ne faut rien mettre...

    il y a aussi l'option d'utiliser les classes amies, par exemple, si tu déclares Portefeuille comme étant amie de EuroB5, elle aura accès à ses données et fonctions privées, donc même si le constructeur par copie et l'affecteur de EuroB5 sont privés, Portefeuille y aura accès...
    Rédacteur "éclectique" (XML, Cours PHP, Cours JavaScript, IRC, Web...)
    Les Règles du Forum - Mon Site Web sur DVP.com (Développement Web, PHP, (X)HTML/CSS, SQL, XML, IRC)
    je ne répondrai à aucune question technique via MP, MSN ou Skype : les Forums sont là pour ça !!! Merci de me demander avant de m'ajouter à vos contacts sinon je bloque !
    pensez à la balise [ code ] (bouton #) et au tag (en bas)

  5. #5
    Expert confirmé
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Décembre 2003
    Messages
    3 549
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Décembre 2003
    Messages : 3 549
    Points : 4 625
    Points
    4 625
    Par défaut
    Citation Envoyé par softstar
    pour empecher l'operateur d'affectation

    il faut egalement que je mette le constructeur par copie

    de Billet en private alors ?
    Tu peux mettre le constructeur de copie en explicite.
    Boost ftw

  6. #6
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    74
    Détails du profil
    Informations personnelles :
    Âge : 49
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2005
    Messages : 74
    Points : 29
    Points
    29
    Par défaut euhh ?
    euhh ? , loufoque

    tu veut dire quoi de placer mon constructeur par copie en explicite ?

    car a part le placer en public ou en private ,

    je ne vois pas bien quoi faire d'autre

    et le probleme c est que j'en ai besoin pour ma fonction addbillet

    merci d'avance de ta réponse

  7. #7
    Expert éminent
    Avatar de Swoög
    Profil pro
    Inscrit en
    Janvier 2003
    Messages
    6 045
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France

    Informations forums :
    Inscription : Janvier 2003
    Messages : 6 045
    Points : 8 339
    Points
    8 339
    Par défaut
    Quand tu déclarres un constructeur comme explicit, ça veut dire qu'il ne sera pas appellé pour faire des conversions implicites (tacites), il faudra l'appeller explicitement...

    rien à voir du tout avec le cas présent...
    Rédacteur "éclectique" (XML, Cours PHP, Cours JavaScript, IRC, Web...)
    Les Règles du Forum - Mon Site Web sur DVP.com (Développement Web, PHP, (X)HTML/CSS, SQL, XML, IRC)
    je ne répondrai à aucune question technique via MP, MSN ou Skype : les Forums sont là pour ça !!! Merci de me demander avant de m'ajouter à vos contacts sinon je bloque !
    pensez à la balise [ code ] (bouton #) et au tag (en bas)

  8. #8
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    74
    Détails du profil
    Informations personnelles :
    Âge : 49
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2005
    Messages : 74
    Points : 29
    Points
    29
    Par défaut merci ;)
    merci de ta réponse swooog , car la je voyais pas l'usage de l explicite

  9. #9
    Expert éminent
    Avatar de Swoög
    Profil pro
    Inscrit en
    Janvier 2003
    Messages
    6 045
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France

    Informations forums :
    Inscription : Janvier 2003
    Messages : 6 045
    Points : 8 339
    Points
    8 339
    Par défaut
    De rien, tu as lu mon POST précédent (avant celui de loufoque) ?
    Rédacteur "éclectique" (XML, Cours PHP, Cours JavaScript, IRC, Web...)
    Les Règles du Forum - Mon Site Web sur DVP.com (Développement Web, PHP, (X)HTML/CSS, SQL, XML, IRC)
    je ne répondrai à aucune question technique via MP, MSN ou Skype : les Forums sont là pour ça !!! Merci de me demander avant de m'ajouter à vos contacts sinon je bloque !
    pensez à la balise [ code ] (bouton #) et au tag (en bas)

  10. #10
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    74
    Détails du profil
    Informations personnelles :
    Âge : 49
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2005
    Messages : 74
    Points : 29
    Points
    29
    Par défaut
    ouep , je vois ce que tu veut dire par le fait de classe amie (mot clé 'friend')

    mais par contre,sais tu me dire,dans mon programme actuel

    pourquoi malgé que je mets l'operateur d'affectation en privé (dans ma classe billet)

    j 'arrive malgé tout a faire un truc du genre

    EuroB5 b1;
    EuboB5 b2=b1;
    cout<<b2;

    il ne me fait aucunes erreurs a la compilation et effectue bien l'affectation

    merci d'avance

  11. #11
    Expert éminent
    Avatar de Swoög
    Profil pro
    Inscrit en
    Janvier 2003
    Messages
    6 045
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France

    Informations forums :
    Inscription : Janvier 2003
    Messages : 6 045
    Points : 8 339
    Points
    8 339
    Par défaut
    s'il te plaît

    parce que comme je te l'ai dit dans mon premier post, ce n'est pas l'affecteur qui est mis ici à contribution, mais le constructeur par copie...
    Si tu veux rendre une classe non copiable, il faut passer les deux (affecteur et constructeur par copie) en private, ne passé que l'un des deux est... quasi-inutile sinon on peut toujours (ou presque) contourner l'un par l'autre
    Rédacteur "éclectique" (XML, Cours PHP, Cours JavaScript, IRC, Web...)
    Les Règles du Forum - Mon Site Web sur DVP.com (Développement Web, PHP, (X)HTML/CSS, SQL, XML, IRC)
    je ne répondrai à aucune question technique via MP, MSN ou Skype : les Forums sont là pour ça !!! Merci de me demander avant de m'ajouter à vos contacts sinon je bloque !
    pensez à la balise [ code ] (bouton #) et au tag (en bas)

  12. #12
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    74
    Détails du profil
    Informations personnelles :
    Âge : 49
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2005
    Messages : 74
    Points : 29
    Points
    29
    Par défaut
    ok , merci beaucoup swoog , je te remercie de ton aide en tout cas

    désolé pour la balise code,j avais pas fait gaffe

    une autre petite question , qui n'as rien a voir,tu t y connais en UML ?

    car je realise mon analyse pour mon travail de fin d'étude la

    (graduat d analyste-programmeur )

    et je me demandais si mon schema etais bon

    si ca te derangerait pas de jeter un oeil ?

    je t'en remercie d'avance

  13. #13
    Expert éminent
    Avatar de Swoög
    Profil pro
    Inscrit en
    Janvier 2003
    Messages
    6 045
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France

    Informations forums :
    Inscription : Janvier 2003
    Messages : 6 045
    Points : 8 339
    Points
    8 339
    Par défaut
    Non, je ne connais quasiment rien à UML... désolé...
    Va sur le forum adéquate ils te donneront peut-être des conseils...
    Rédacteur "éclectique" (XML, Cours PHP, Cours JavaScript, IRC, Web...)
    Les Règles du Forum - Mon Site Web sur DVP.com (Développement Web, PHP, (X)HTML/CSS, SQL, XML, IRC)
    je ne répondrai à aucune question technique via MP, MSN ou Skype : les Forums sont là pour ça !!! Merci de me demander avant de m'ajouter à vos contacts sinon je bloque !
    pensez à la balise [ code ] (bouton #) et au tag (en bas)

  14. #14
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    74
    Détails du profil
    Informations personnelles :
    Âge : 49
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2005
    Messages : 74
    Points : 29
    Points
    29
    Par défaut
    oki merci beaucoup swoog de ta sympathie et de ta gentillesse en tout cas

    je cloture donc ce sujet avec le statut résolu

    je te souhaite une bonne journée , et encore merci

  15. #15
    Expert éminent
    Avatar de Swoög
    Profil pro
    Inscrit en
    Janvier 2003
    Messages
    6 045
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France

    Informations forums :
    Inscription : Janvier 2003
    Messages : 6 045
    Points : 8 339
    Points
    8 339
    Par défaut
    Je t'en prie, bonne continuation ^^
    Rédacteur "éclectique" (XML, Cours PHP, Cours JavaScript, IRC, Web...)
    Les Règles du Forum - Mon Site Web sur DVP.com (Développement Web, PHP, (X)HTML/CSS, SQL, XML, IRC)
    je ne répondrai à aucune question technique via MP, MSN ou Skype : les Forums sont là pour ça !!! Merci de me demander avant de m'ajouter à vos contacts sinon je bloque !
    pensez à la balise [ code ] (bouton #) et au tag (en bas)

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

Discussions similaires

  1. ZEOS : encore un petit coup de pouce svp
    Par llewsor dans le forum Débuter
    Réponses: 6
    Dernier message: 21/01/2013, 17h51
  2. un petit coup de pouce svp
    Par freestyle83 dans le forum Langage
    Réponses: 6
    Dernier message: 17/03/2011, 14h19
  3. SDL & GTK besoin d'ub petit coup de pouce :)
    Par hunter99 dans le forum SDL
    Réponses: 1
    Dernier message: 16/04/2007, 00h51
  4. tableau de pointeur+tri+coup de pouce svp
    Par php4life dans le forum C
    Réponses: 12
    Dernier message: 15/04/2006, 14h49
  5. Réponses: 3
    Dernier message: 28/02/2003, 18h06

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