Bonjour,

J'ai un soucis de passage de pointeur de vector en paramètre.
Dans mon main, je déclare un vector <FIFO> fifo (nb_fifo); ainsi qu'un vector <Feeder *> fee(nb_fifo); comme constructeurs.

Ma classe Feeder permet, entre autre, de remplir une FIFO . J'aimerai donc passer comme argument à la méthode qui permet de remplir la fifo fifo(i).

Voici mon code :

Main :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
...
#include "feeder.h"
#include "fifo.h"
void main()
{ ...
  vector <FIFO> fifo (nb_fifo);
  vector <Feeder *> fee(nb_fifo);
  for(int i = 0;i<nb_fifo;i++)
     fee[i] = new Feeder(...,&fifo[i]);//Je lance plusieurs feeder car il y a plusieurs fifos a remplir
     fee[i]->remplis_fifo();//dans remplis_fifo() se passe des actions tels this->fifo.Empiler("blabla");
  ...
}
Classe Feeder :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
#include "fifo.h"
class Feeder
{
     public:
        Feeder(..., FIFO *F) 
        {
                ...
  		f=F;
        }
        ...
        FIFO *f;
        ...
}
Et mon programme plante avec l'erreur :
error LNK2022: échec de l'opération sur les métadonnées (8013118D) : Informations sur la disposition incohérentes dans des types dupliqués (Feeder) : (0x0200004f).

LE problème vient de la facon dont je manipule le pointeur sur vector fifo() je pense puisque quand je passe ma fifo comme paramètre par valeur (c'est à dire fee[i] = new Feeder(...,fifo[i]); dans le main et Feeder(..., FIFO F);FIFO f; dans la classe Feeder, cela fonctionne.

Si je n'ai pas été assez précis sur un point, demandez moi !

Help