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 :

[Deb]Charge un tableau d'instance dans une classe


Sujet :

C++

  1. #1
    Membre actif
    Inscrit en
    Décembre 2003
    Messages
    491
    Détails du profil
    Informations forums :
    Inscription : Décembre 2003
    Messages : 491
    Points : 245
    Points
    245
    Par défaut [Deb]Charge un tableau d'instance dans une classe
    Bonjour,

    Ce message fait suite a mon message surcharge d'operateur qui n'a pas eu l'air d'avoir ete suffisament comprehensible.

    Voila je dois faire une surcharge d'operateur pour += qui additionne deux IC d'une classe promotion.

    Ces classes Promo ont pour attribut un tableau IC d'une classe etudiant et un int qui donne le nombre d'elem des tableaux.

    Je n'arrive pas a recuperer mes tableaux dans les IC de classe Promo et je n'ai pas de message d'erreur a la compil et a l'execution le programme plante.

    Le but de tout cela est de faire une boucle qui recuperer les elem. des deux IC Promo et de creer une troisieme IC Promo et copie les deux autres dedant.

    Cela est le code de ma surcharge ou j'ai teste que je recupere bien mes var. d'IC Promo afin de creer mon 3E Array.

    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
     
    PromoEtu PromoEtu :: operator += (const PromoEtu& PE){
    PromoEtu NouvelPromo;                    //Decl d'une nouvelle Promo
     
    int ancienIndex;                         //Long de l'array de l'IC appellante
    ancienIndex = IndexEtu;                  //Recup long. array premiere IC 
     
    NouvelPromo.IndexEtu = ancienIndex + PE.IndexEtu;        
    cout << "\n Long. totale nouvel array "<< NouvelPromo.IndexEtu;
    cout << "\n " ;
     
    for  (int i = 0; i<ancienIndex;i++){
    Etud X;
    X = PE.PtrPromoEtu[i];
    X.affichEtudiant();
    }
    return NouvelPromo;
             }

    J'essaie dans la boucle for de faire un test pour verifier que je recupere bien un des objets du tableau etudiant inclus dans mon IC Promo et c'est ici que mon programme plante.

    A l'ecran la methode affiche est bien appelee mais elle ne me donne que les adresses des variables suivantes.

    Numero d'etudiant -2081649835
    Numero de l'option 1448282348

  2. #2
    Rédacteur
    Avatar de Laurent Gomila
    Profil pro
    Développeur informatique
    Inscrit en
    Avril 2003
    Messages
    10 651
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2003
    Messages : 10 651
    Points : 15 920
    Points
    15 920
    Par défaut
    N'oublie pas que dans += il y a =. Ce que tu fais là est un opérateur +, puisque tu ne réalises aucune affectation. Normal donc que l'objet avec lequel tu as réalisé l'appel ne soit pas modifié.

    Par contre ça n'a peut-être rien à voir avec ton problème, si c'est dans la fonction += que ça plante.

  3. #3
    Membre actif
    Inscrit en
    Décembre 2003
    Messages
    491
    Détails du profil
    Informations forums :
    Inscription : Décembre 2003
    Messages : 491
    Points : 245
    Points
    245
    Par défaut
    Oui bien sur la surcharge n'est pas finie. Ce que j'ai imagine faire apres la copie des deux array dans le troisieme est de sauver le resultat a l'adresse du premier operand ce qui aurai rempli le role du +=.

    Effectivement je n'ai pas encore pu faire quelque chose car je n'arrive pas a atteindre le array.


    Voila, ce qui me rendrai service c'est que tu me dise si l'appel du array du 2e operand "PE.PtrPromoEtu[i]" est correct ou comment faire pour le faire.
    Comme je comprend les choses PE est le deuxieme operand de la fonc +=.
    L'autre question qui me derange est que je ne sais plus comment faire pour avoir le tableau du premier operand.

    Pour cela j'ai essaye
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    for  (int i = 0; i<ancienIndex;i++){
    Etud X;
    X = this.PtrPromoEtu[i];
    X.affichEtudiant();
    }
    Mais la j'ai ce messsage d'erreur



    PromoEtuImpl.cpp: In member function `PromoEtu PromoEtu::operator+=(const PromoEtu&)':
    PromoEtuImpl.cpp:126: error: `PtrPromoEtu' is not a type

    PromoEtuImpl.cpp:126: error: request for member of non-aggregate type before '[' token
    Dans ma decl de classe j'ai

    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
     
    class PromoEtu {
     
    private:      
    int IndexEtu;                          // Numero Index array etudiant 
    Etud *PtrPromoEtu;                      // Pointeur sur Adresse de base Array ETU
     
    public:
     
           PromoEtu(void);                         //construc per def.     
           PromoEtu(Etud *PtrPromoEtu, int index); //construc avec init. numEt et Op      
          ~PromoEtu();                             //destruc
     
    //Surcharge op. pour saisie promo.
    friend istream& operator >> (istream&, PromoEtu& P); //Decl Surcharge >> CIN
    PromoEtu operator += (const PromoEtu& PE);     //Decl Surcharge +=
     
     
     
    //void saisiePromoEtu(void);                  //Decl meth. saisie d'une promo.
    void affichMoyPromoEtu(void);                    //Decl Affich moy. d'une promo.
     
    int get_IndexPromo(void);                     //Decl Affich moy. d'une promo.
          };
    Si tu peux faire quelque chose pour moi d'avance merci

    Marc_3

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

Discussions similaires

  1. Appel d'une instance dans une classe
    Par Minos2 dans le forum Apple
    Réponses: 0
    Dernier message: 05/02/2010, 12h18
  2. Nom d'instance dans une classe
    Par alexdevl dans le forum Général Python
    Réponses: 3
    Dernier message: 18/10/2008, 18h42
  3. Réponses: 1
    Dernier message: 29/06/2007, 15h13
  4. Tableau de constantes dans une classe statique
    Par Nico_stras dans le forum C#
    Réponses: 4
    Dernier message: 05/03/2007, 20h18
  5. Passer un tableau en parametre dans une fonction js
    Par hellmaster78 dans le forum Général JavaScript
    Réponses: 5
    Dernier message: 19/06/2005, 14h35

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