Partage
  • Partager sur Facebook
  • Partager sur Twitter

Problème de vecteur d'objet ?

Sujet résolu
    6 mars 2008 à 10:29:01

    Salut tout le monde !

    désolé de vous dérangez, mais j'ai un petit problème (vous allez me dire : rooooohhh le débutant !!! :D ) Mais c'est le seul truc dans mon programme de 800 lignes qui me bloque depuis 4 jours alors ça me fait un peu désespérer.

    Donc voila : j'ai défini un vecteur d'objet (initialisé) que je souhaite ensuite utiliser dans une fonction, en tant que vecteur d'objet (pour que les valeurs de chaque objet soit modifiées), donc j'ai fait :


    1. PARTICLE particle[n_particles](1);   //N particules de type "1" (cf. post ci-dessous).
    2. SYSTEM::Initialization(particle);    //Modification des N objets.
    3. //...
    4. void SYSTEM::Initialization(PARTICLE &particle) //Methode d'un objet "SYSTEM".
    5. {
    6.     //...
    7.     for(n=1 ; n<=n_particles ; n++)
    8.     {
    9.         //je mets le parametre a zero.
    10.         particle[n].set_parametre(0);
    11.     //...


    En faisant cela le compilateur (Dev-Cpp) me dit :
    - pour la fonction :
    "no matching function for call to `SYSTEM::Initialization(PARTICLE[((unsigned int)((int)n_particles))])'"
    "candidates are: void SYSTEM::Initialization(PARTICLE&) "
    "no match for 'operator[]' in 'particle[particle_1]' "

    - pour Main :
    "variable-sized object `particle' may not be initialized "
    "no matching function for call to `PARTICLE::PARTICLE()' "
    "candidates are: PARTICLE::PARTICLE(const PARTICLE&) "
    " PARTICLE::PARTICLE(int) "

    Effectivement il me précise bien de mettre le type de variable que j'ai moi même défini, mais c'est pourtant bien ce que je crois avoir fait, non ?

    En gros : je pense avoir un problème lors de ma déclaration de mon vecteur d'objet. J'ai surement dû mal écrire quelque chose, mais franchement, je ne vois pas du tout quoi o_O
    • Partager sur Facebook
    • Partager sur Twitter
      6 mars 2008 à 11:29:42

      tu as quoi comme constructeurs de dispo pour "Particules" ?
      • Partager sur Facebook
      • Partager sur Twitter

      Recueil de code C et C++  http://fvirtman.free.fr/recueil/index.html

        6 mars 2008 à 11:38:54

        Ah oui c'est vrai j'ai oublié de le préciser :

        1. class PARTICLE
        2. {
        3.     public :
        4.         PARTICLE(int his_type);
        5.         ~PARTICLE();
        6.         //...
        7.     private :
        8.         int type;
        9.         //...
        10. }
        11. PARTICLE::PARTICLE(int his_type)
        12. {
        13.     this->type = his_type;
        14. }
        • Partager sur Facebook
        • Partager sur Twitter
          6 mars 2008 à 15:32:49

          Le problème est que tu passes un tableau en paramètre et que la fonction s'attend à UNE référence. Pour déclarer qu'une fonction attend un tableau utilise un pointeur ou les crochets ( [] ).

          Tu ne peux pas non plus appeler ton constructeur ainsi :
          1. MaClasse objets[ NOMBRE ]( valeur );


          Tu peux parcontre le faire en utilisant la classe std::vector. Ce qui permet, en plus, de le passer en référence! (c'est un objet)
          1. #include <vector>
          2. void f_passe( std::vector<MaClasse> & vecteur );
          3. void f()
          4. {
          5.     // déclaration d'un vecteur (tableau) qui
          6.     // contion NOMBRE objets de MaClasse.
          7.     // Tous initialisés avec l'appel du constructeur spécifié
          8.     std::vector<MaClasse> objets( NOMBRE, MaClasse::MaClasse( valeur ) );
          9.     f_passe( objets );
          10. }
          11. void f_passe( std::vector<MaClasse> & vecteur )
          12. {
          13.     for( size_t i = 0; i < vecteur.size(); i++ )
          14.     {
          15.         //...
          16. }

          • Partager sur Facebook
          • Partager sur Twitter
            6 mars 2008 à 17:09:39

            OK j'ai passé l'après midi justement à me renseigner sur "vector", maintenant j'ai compris.

            Merci beaucoup pour ta précieuse aide MatteX !!!
            • Partager sur Facebook
            • Partager sur Twitter

            Problème de vecteur d'objet ?

            × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
            × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
            • Editeur
            • Markdown