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 :

Incrémenter une variable par référence dans une méthode


Sujet :

C++

  1. #1
    Membre régulier
    Inscrit en
    Mars 2007
    Messages
    163
    Détails du profil
    Informations forums :
    Inscription : Mars 2007
    Messages : 163
    Points : 76
    Points
    76
    Par défaut Incrémenter une variable par référence dans une méthode
    Bonjour,
    j'ai un petit soucis ce qui concerne d'après que je croie c'est un problème de pointeur et j'arrive pas a le résoudre

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
     
    int main() 
    {
    tableau a;      // tableau est une classe j'ai crée une instance 
     
    a.tab_prod = new tab_prod_fab[100];  // tab_prod est un vecteur qui contient une liste or de type tab_prod_fab
     
    for (int i=0;i<5;i++,a.tab_prod++)         //ici incrémentation ça marche a.tab_prod++ 
    {init_prod_fab(*a.tab_prod,i);
     affiche_prod_fab(*a.tab_prod);
    }
    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
     
    void init_prod_fab(tab_prod_fab &e,int cpt)
    {     // ici sa marche pas l'incrémentation de a.tab_prod qui est ici e de type tab_prod_fab++
    	string Nomprod[5]={"Machine à Laver","cuisiniére","cafétiére","frigo","frigo samsung"};
    	string durefabric[5]={"13","40","14","55","33"};
    	int EtatStock[5]={23,12,18,25,54};
    	int Quantitfab[5]={0,0,0,0,0};
     
     
    	strcpy(e.Nom_prod,Nomprod[cpt].c_str());
    	strcpy(e.dure_fabric,durefabric[cpt].c_str());
    	e.Etat_stok=EtatStock[cpt];
    	e.Quantit_fab=Quantitfab[cpt];
     
    }
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    class tableau
    {
      public:
    	int i,j;
    	int t[20];
    	tab_prod_fab  *tab_prod;
    }
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    //voila ma structure
    struct tab_prod_fab
    {
        char Nom_prod[30];
        char dure_fabric[30];		// le nom du produit et durré de fabrication du produit 
        int Etat_stok;   			// nombre de produit en stock 
        int Quantit_fab;		      	//Quantité à fabriqué ce qu'il reste a fabriqué pour le client (quantité demandé état de stock)
    };
    le probléme est que j'arrive pas a incrémenté la variable de type tableau a.tab_prod++ dans la méthode void init_prod_fab(tab_prod_fab &e,int cpt)


    Merci d'avance de votre attention

  2. #2
    Membre averti
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    349
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : Suisse

    Informations forums :
    Inscription : Novembre 2005
    Messages : 349
    Points : 379
    Points
    379
    Par défaut
    Si tu veux pouvoir incrémenter avec ++ sur les objets de ta classe, tu devrais surcharger l'opérateur ++, sinon le compiltaeur ne sait pas ce que signifie "tab_prod_fab++".

    Et vu ton code, tu devrais jeter un coup d'oeil du côté de la stl (Standard Template Library) de C++.

  3. #3
    Membre éprouvé
    Avatar de Spout
    Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Février 2007
    Messages
    904
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux

    Informations forums :
    Inscription : Février 2007
    Messages : 904
    Points : 1 067
    Points
    1 067
    Par défaut
    Salut,

    Je ne suis pas sûr que l'incrémentation que tu fais quand "ça fonctionne" rest celle que tu penses. En effet, là où tu dis que ça fonctionne, c'est ton pointeur que tu incrémentes, pas l'objet.
    En déréférençant ton pointeur au moment où tu le passes dans la fonction, tu perds cette possibilité de faire une incrémentation.

    Si c'est l'objet pointé que tu veux incrémenter, alors effectivement tu dois définir explicitement l'opérateur++ pour le type tab_prod_fab.

    Bon courage

Discussions similaires

  1. Réponses: 10
    Dernier message: 12/01/2015, 00h57
  2. Réponses: 1
    Dernier message: 26/12/2010, 22h20
  3. [PowerShell] Comment passer une string "par référence" dans une fonction ?
    Par Plageman dans le forum Scripts/Batch
    Réponses: 7
    Dernier message: 11/11/2010, 16h01
  4. [Tableaux] passage d'une variable par référence
    Par grinder59 dans le forum Langage
    Réponses: 7
    Dernier message: 14/05/2007, 18h52
  5. Réponses: 3
    Dernier message: 06/09/2006, 10h06

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