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++/CLI Discussion :

Problème d'affichage (c++)


Sujet :

C++/CLI

  1. #1
    Membre habitué Avatar de chercheur111
    Profil pro
    Étudiant
    Inscrit en
    Juillet 2010
    Messages
    352
    Détails du profil
    Informations personnelles :
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2010
    Messages : 352
    Points : 163
    Points
    163
    Par défaut Problème d'affichage (c++)
    Bonjour,

    Mon code est le suivant:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
     
    #include <iostream>
    using namespace std;
     
    class Souris
    {
     
       public: double poids;
       public: string couleur;
       public: unsigned int age;
       public: unsigned int esperancevie;
       public: bool clonee;
       Souris(double p,string c,unsigned int a, unsigned int esperancevie=36){
    	   poids=p;
    	   couleur=c;
    	   age=a;
    	   clonee=false;
    	   esperancevie=36;
    	   cout<<"Une nouvelle souris avec esperancevie "<<esperancevie<<endl;
       }
     
       public: void afficher(){
    	   cout<< "esperance dans afficher "<<esperancevie<<endl;
       }
     
       };
    int main()
    {
      Souris s1(50.0, "blanche", 2);
      s1.afficher();
     
      return 0;
    }
    J'ai eu:

    Ma question est la suivante: pourquoi j'ai eu deux valeurs différentes pour esperancedevie ?

    Avez-vous une idée ?
    Merci d'avance.
    Images attachées Images attachées  
    La science ne connaît qu'une loi: la contribution scientifique.

  2. #2
    Membre habitué Avatar de chercheur111
    Profil pro
    Étudiant
    Inscrit en
    Juillet 2010
    Messages
    352
    Détails du profil
    Informations personnelles :
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2010
    Messages : 352
    Points : 163
    Points
    163
    Par défaut
    J'ai changé:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     Souris(double p,string c,unsigned int a, unsigned int esperancevie=36)
    par:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     Souris(double p,string c,unsigned int a, unsigned int esperancevie1=36){
    Et ça marche

    Merci.
    La science ne connaît qu'une loi: la contribution scientifique.

  3. #3
    Membre émérite
    Avatar de skeud
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2011
    Messages
    1 091
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Loire Atlantique (Pays de la Loire)

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

    Informations forums :
    Inscription : Juin 2011
    Messages : 1 091
    Points : 2 724
    Points
    2 724
    Billets dans le blog
    1
    Par défaut
    Alors déjà plusieurs chose:
    Le mot clef public n'est pas obligatoire pour chaque déclaration, une seule fois suffit:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    public:
    void mafunc();
    voi mafunc2();
    private:
    int toto;
    int titi;
    int tutu;
    Dans ce cas, les deux fonctions sont public et les trois int sont private. En voyant ton code, je devine que tu viens du monde java ^^. En c++ on fait les choses un peu différemment (certes ça reviens au meme, mais c'est plus joulis).

    Ensuite es-tu sur que ton code compile?

    Dans ton constructeur, ta variable d'entrée esperancedevie possède le meme nom que ton attribut. Quand tu modifie esperancedevie dans ton constructeur, en fait tu modifies ta variable d'entré et non pas ton attribut.

    Une bonne pratique en c++ est de préfixer tes attribut:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    class Maclasse {
    public:
      Maclasse(int val1, int val2) {
        m_val1 = val1;
        m_val2 = val2;
      }
    private:
      int m_val1;
      int m_val2;
    };
    Ainsi tu évites ce genre de soucis. En conclusion, essaye de regarder les bonne pratiques c++:
    _ visibilité des attributs
    _ nommage des variables
    _ déclaration dans le header, code dans un cpp.
    _ compilation avec -Wall (affichage de tout les warning) -Werror (arret de la compilation lorsqu'un warning est affiché).
    Pas de solution, pas de probleme

    Une réponse utile (ou +1) ->
    Une réponse inutile ou pas d'accord -> et expliquer pourquoi
    Une réponse à votre question


  4. #4
    Expert éminent sénior
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 369
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

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

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 369
    Points : 41 518
    Points
    41 518
    Par défaut
    Tu peux utiliser les listes d'initialisation, qui évitent ce problème quand les noms sont identiques:
    Code C++ : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
     #include <iostream>
    using namespace std;
     
    class Souris
    {
     
    	public: double poids;
    	public: string couleur;
    	public: unsigned int age;
    	public: unsigned int esperancevie;
    	public: bool clonee;
     
    	Souris(double p,string c,unsigned int a, unsigned int esperancevie=36)
    	: poids(p), couleur(c), age(a), esperancevie(esperancevie), clonee(false) {
    		cout << "Une nouvelle souris avec esperancevie " << esperancevie << endl;
    	}
     
    	public: void afficher(){
    		cout<< "esperance dans afficher " << esperancevie << endl;
    	}
    };
     
    int main()
    {
    	Souris s1(50.0, "blanche", 2);
    	s1.afficher();
     
    	return 0;
    }

    PS: Ce n'est pas du C++/CLI, c'est du C++ normal. Tu postes dans la mauvaise section du forum.
    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.

  5. #5
    Membre habitué Avatar de chercheur111
    Profil pro
    Étudiant
    Inscrit en
    Juillet 2010
    Messages
    352
    Détails du profil
    Informations personnelles :
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2010
    Messages : 352
    Points : 163
    Points
    163
    Par défaut
    Merci beaucoup pour vos réponses
    La science ne connaît qu'une loi: la contribution scientifique.

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

Discussions similaires

  1. Problème d'affichage
    Par mustang-gx dans le forum Bases de données
    Réponses: 8
    Dernier message: 26/01/2005, 23h54
  2. Problème d'affichage avec trace
    Par WriteLN dans le forum Flash
    Réponses: 10
    Dernier message: 22/10/2003, 17h59
  3. [Kylix] problème d'affichage
    Par scalvi dans le forum EDI
    Réponses: 1
    Dernier message: 18/06/2003, 11h07
  4. Réponses: 1
    Dernier message: 06/03/2003, 12h57
  5. probléme d'affichage d'une fiche
    Par sb dans le forum Composants VCL
    Réponses: 7
    Dernier message: 29/08/2002, 10h43

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