Forum Clubic

(C++) Creation d'un tableau (si possible dynamique) d'objets dans un objet

Bonjour.

J’ai donc besoin de créer un tableau d’objet (si possible dynamique) dans un programme en C++ mais je rencontre plein de problèmes lors de la compilation.
Voici le résume de cette partie concernée du programme : j’ai crée une classe “phrase” qui contient n fois un nombre d’objet mot (et n dépend du nombre de mots dans la phrase) en plus des autres attributs et fonctions membres.
Pouvez-vous me donner la syntaxe typique à écrire ou peut être un autre type de chose à utiliser.
Merci

slt j’ai lu to mess et c’est interessant
peut etre tu trouvera
ciao

[quelqu’un peut-il m’expliquer avant que je parte l’utilité du commentaire précédent]

Si tu pouvais donner plus d’infos sur le code, les erreurs, …

utilisation de malloc?

desolé d’avoir eté inactif.
Je vous passe le code (que je vais coupé un peu…)

//main.cpp

#include "phrase.h"
#include "mot.h"
#include <cstdlib>
#include <iostream>
#include <string>
#include <fstream>

using namespace std;

int main(int argc, char *argv[])
{
    string nom;
    phrase phrase1;
    phrase1.modContenu("");
    phrase1.affInfo();
    phrase1.extMots();
    phrase1.filtMots();
    phrase1.affMots();
}

---------------

//phrase.h

#ifndef PHRASE_H
#define PHRASE_H
#include <cstdlib>
#include <iostream>
#include <string>
#include <fstream>

using namespace std;

class phrase
{
      string contenu;
      mot *mots;
      string *mots0;
      int nbreCaraTotal;
      int nbreCara;
      int nbreSepa;
      int *posSepa;
      int nbreMots0;
      int nbreMots;
      bool *sepa;
      
     
      
      
      public:
             phrase();
             ~phrase();
             void modContenu(string);
             void affContenu();
             void recInfo();
             void affInfo();
             void extMots();
             void filtMots();
             void affMots();
             
};

#endif

-----------------

//phrase.cpp

#include "phrase.h"
#include "mot.h"
#include <cstdlib>
#include <iostream>
#include <string>
#include <fstream>


using namespace std;

phrase::phrase()
{
               nbreSepa=0;
}

phrase::~phrase()
{
                 delete[] posSepa;
                 delete[] sepa;
                 delete[] mots0;
                 delete[] mots;
                 
}

void phrase::filtMots()
{
   int add=0;
   mots = new mot[nbreMots]; 
   for(int i=0; i<nbreMots0; i++)
   {
           if(mots0[i]!="" )
           {
               mots[add].attribuer(mots0[i]);
               add++;
               
           }
   }
}


-----------------

//mot.h

#ifndef MOT_H
#define MOT_H
#include "phrase.h"
#include <cstdlib>
#include <iostream>
#include <string>
#include <fstream>

using namespace std;

class mot
{
      string contenu;
      string contenuSansTerm;
      string contenuSansGroupe;
      string nature;
      string fonction;
      string termBase;
      .....
      .....

     public:
                  mot(string);
                  ~mot();
                  void recInfo();
                  .....
                  .....
                  void attribuer(string contenu0);
                 .....
}

-------------------

//mot.cpp

#include "phrase.h"
#include "mot.h"
#include <cstdlib>
#include <iostream>
#include <string>
#include <fstream>



using namespace std;

mot::mot(string contenu0)
{
      contenu=contenu0;
      mot::recInfo();
      reperto=false; 
      termBase="";
      contenuSansTerm="";
      contenuSansGroupe="";
      tailleCST=0;
      groupe="";
      posInFich=0;
      ptVirg=0;
}  

void mot::attribuer(string contenu0)
{
     contenu=contenu0;
     mot::recInfo();
}  

........
..........
}


FIN DU CODE ouf (je rappelle que j'ai enlevé des partie inutiles qui n'ont aucun rapport avec mon problème)

les erreurs :  C:\Programmation\Projai\phrase.cpp In member function `void phrase::affMots()': 
124 C:\Programmation\Projai\phrase.cpp ")) << (((phrase*)this)->phrase::mots + (+(((unsigned int)i) * 48u)))->mot::afficher()' 
 note D:\Dev-Cpp\include\c++\3.4.2\bits\ostream.tcc:63 candidates are: std::basic_ostream<_CharT, _Traits>& std::basic_ostream<_CharT, _Traits>::operator<<(std::basic_ostream<_CharT, _Traits>&(*)(std::basic_ostream<_CharT, _Traits>&)) [with _CharT = char, _Traits = std::char_traits<char>] 
10 fois ça :  note D:\Dev-Cpp\include\c++\3.4.2\bits\ostream.tcc:63                 std::basic_ostream<_CharT, _Traits>& std::basic_ostream<_CharT, _Traits>::operator<<(long unsigned int) [with _CharT = char, _Traits = std::char_traits<char>] 
 C:\Programmation\Projai\phrase.cpp In member function `void phrase::filtMots()': 
132 C:\Programmation\Projai\phrase.cpp no matching function for call to `mot::mot()' 
 note C:\Programmation\Projai\mot.h:14 candidates are: mot::mot(const mot&) 
 note C:\Programmation\Projai\mot.h:14                 mot::mot(std::string) 
 C:\Programmation\Projai\Makefile.win [Build Error]  [phrase.o] Error 1 




Bon voila bon je suis plus débutant en c++ mais je suis tres loin d’un pro avec.
J’espere que ça va vous aider (si vous arriver a comprendre quelque chose dans ce fouilli)
Message edité le 18/03/2008 à 12:49

std::list
std::vector

ces 2 objets ne te vont pas ?

sinon bah vive malloc :slight_smile: et longue vie a lui