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 :

constructeur et const


Sujet :

C++

  1. #1
    Membre confirm�
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    180
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 180
    Par d�faut constructeur et const
    Bonsoir,

    Dans le cadre d'un exercice o� j'ai une classe R2, je dois pouvoir initialiser un �l�ment de R2 par :

    Seulement je n'ai pas le droit d'avoir des constructeurs avec const ( si j'ai bien compris). Je ne sais donc pas comment faire pour pouvoir initialiser un R2 constant ?

    Je sais juste faire un constructeur du type :

    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    R2 ( double a=0., double b=0.) {x=a;y=b;}
    Merci � vous.

  2. #2
    Membre exp�riment�
    Profil pro
    Dev
    Inscrit en
    D�cembre 2007
    Messages
    191
    D�tails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations professionnelles :
    Activit� : Dev

    Informations forums :
    Inscription : D�cembre 2007
    Messages : 191
    Par d�faut
    Tu peux initialiser tes variables dans un constructeur avec une liste d'initialisation, afin de r�gler certains probl�mes de const.

    au lieu de :

    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    R2 ( double a=0.0, double b=0.0) {
      x=a;
      y=b;
    }
    faire :

    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    R2 ( double a=0.0, ,double b=0.0) :
      x(a),
      y(b) {
    }
    �a r�soud ton probl�me ? J'ai r�pondu vite fait en pensant que c'�tait �a, je n'ai pas v�rifi�.

    EDIT pour le futur lecteurs du post (voir ci-dessous) : donc non ce n'est pas �a, le code post� au d�part ne pose pas de probl�me

  3. #3
    Membre �prouv�
    Avatar de NiamorH
    Inscrit en
    Juin 2002
    Messages
    1 309
    D�tails du profil
    Informations forums :
    Inscription : Juin 2002
    Messages : 1 309
    Par d�faut
    Et bien je dirais qu'il va ton constructeur. Effectivement un constructeur n'est pas d�clar� const, mais il peut �tre utilis� pour construire un objet const.

  4. #4
    Membre confirm�
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    180
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 180
    Par d�faut
    Ah merci beaucoup !
    Je pensais que c'�tait juste une autre fa�on d'�crire x=a; et y=b; .

    Sinon, j'ai un autre petit probl�me : j'ai fait un operateur () qui permet d'acc�der � l'abscisse et l'ordonnee de mon point, � savoir :

    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    R operator () (int i) {if (i==1) return x; else if (i==2) return y; else {assert(0);abort();}  }
    Seulement, j'aimerais pouvoir faire maintenant l'operation inverse, � savoir pouvoir initaliser par exemple P(1) � 3 en �crivant P(1)=3;

    Il faut donc que je cr�e � la fois un nouvel operateur (), et aussi un operateur= c'est �a ?

  5. #5
    Membre confirm�
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    180
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 180
    Par d�faut
    Citation Envoy� par NiamorH Voir le message
    Et bien je dirais qu'il va ton constructeur. Effectivement un constructeur n'est pas d�clar� const, mais il peut �tre utilis� pour construire un objet const.

    Ah ben oui effectivement !

  6. #6
    Expert �minent
    Avatar de M�dinoc
    Homme Profil pro
    D�veloppeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 397
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 41
    Localisation : France

    Informations professionnelles :
    Activit� : D�veloppeur informatique
    Secteur : High Tech - �diteur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 397
    Par d�faut
    Ou que tu retournes une r�f�rence non-constante vers x ou y.
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parl� avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

  7. #7
    Membre confirm�
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    180
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 180
    Par d�faut
    Mais je dois d�finir quand m�me un op�rateur ?

  8. #8
    Membre �prouv�
    Avatar de NiamorH
    Inscrit en
    Juin 2002
    Messages
    1 309
    D�tails du profil
    Informations forums :
    Inscription : Juin 2002
    Messages : 1 309
    Par d�faut
    Tu rajoutes juste un & pour ton type de retour de l'operateur() que tu as d�j� et c'est bon.

  9. #9
    Membre confirm�
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    180
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 180
    Par d�faut
    Merci, effectivement �a marche, mais je ne comprends pas pourquoi.
    P(1) retourne une valeur, donc comment �a se fait qu'en �crivant P(1)=3 on stocke 3 dans x ?

  10. #10
    Membre �prouv�
    Avatar de NiamorH
    Inscrit en
    Juin 2002
    Messages
    1 309
    D�tails du profil
    Informations forums :
    Inscription : Juin 2002
    Messages : 1 309
    Par d�faut
    Modifi�e, P(1) renvoie une r�f�rence vers un ... double c'est �a ?
    C'est comme si tu donnais un acc�s direct � ta variable. Une r�f�rence c'est un alias d'une autre variable/objet.

    Faut fraiment que tu ailles faire un tour dans cette faq... tu y prendras plaisir en plus je pense.

  11. #11
    Membre confirm�
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    180
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 180
    Par d�faut
    Ok, merci.
    J'ai lu une partie de la FAQ, mais y'a que la pratique qui permet d'apprendre, on retient (presque) rien en info en lisant un bout de papier.
    Ceci dit je vais aller lire ce qui est en rapport avec mon probl�me.

  12. #12
    Membre �prouv�
    Avatar de NiamorH
    Inscrit en
    Juin 2002
    Messages
    1 309
    D�tails du profil
    Informations forums :
    Inscription : Juin 2002
    Messages : 1 309
    Par d�faut
    Il est important de pratiquer c'est vrai, mais contrairement � ce que tu peux penser, on apprend �normement de la lecture, je dirais m�me surtout dans un domaine aussi vaste que le C++ o� il est impossible d'explorer tout par de simples exp�rimentations, ou d'arriver � se poser toutes les questions pertinentes.

    M�me si pour le moment tu ne retiens pas tout de la faq, tu vas y entrevoir des techniques, des id�es et des lignes directrices de programmation, que tu pourras revenir voir plus tard pour approffondir ou lorsque tu en as besoin.

    Il est bon de la lire m�me ne serait-ce que pour les questions, sans chercher � ma�triser la r�ponse, car tu sais que lorsque tu te reposeras la m�me question, il suffira de se pencher un peu mieux sur la r�ponse pour comprendre. Mais tu sauras o� chercher.

  13. #13
    Membre Expert
    Avatar de poukill
    Profil pro
    Inscrit en
    F�vrier 2006
    Messages
    2 155
    D�tails du profil
    Informations personnelles :
    �ge : 41
    Localisation : France

    Informations forums :
    Inscription : F�vrier 2006
    Messages : 2 155
    Par d�faut
    Je suis compl�tement d'accord avec NiamorH. Le C++ est un langage compliqu�, il faut du temps, beaucoup de temps pour bien le ma�triser. Les bonne lectures permettent d'acqu�rir de bons r�flexes !

Discussions similaires

  1. R�ponses: 4
    Dernier message: 16/06/2011, 23h36
  2. Constructeur de copie sans "const"
    Par cyberpi dans le forum C++
    R�ponses: 6
    Dernier message: 10/12/2006, 17h34
  3. [VB6]Déclaration d'un Constructeur Spécialisé
    Par TagadaTsoin dans le forum VB 6 et ant�rieur
    R�ponses: 21
    Dernier message: 26/05/2004, 14h09
  4. Chaines et pointeurs mais pas "const"
    Par hpfx dans le forum C
    R�ponses: 9
    Dernier message: 05/10/2003, 20h23
  5. pb constructeurs classes d�rivant classe abstraite
    Par Cornell dans le forum Langage
    R�ponses: 2
    Dernier message: 10/02/2003, 19h02

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