Urgent pb C++

riri -  
 riri -
j'ai un soucis avec mon code

mon .h
const int NB_WARNING = 14
std::string _errorLevel[NB_WARNING]

mon .c

....
for (int i=0;i<NB_WARNING;i++){
if ((_errorLevel[i]).length() == 0) {
_errorLevel[i]="test";
cout << i << _errorLevel[i];
}
}

le probleme c'est que mon tableau est toujours vide meme apres l'affectation
pourquoi ?

6 réponses

  1. grdTonioHardware Messages postés 43 Statut Membre 12
     
    c koi ce std:: qui traine ???
    en plus si t'utilise la classe string je te conseil de faire un new.
    sinon utilise le char * ca passe mieux.

    Bonne prog !!
    @++ !!!
    0
  2. marvinrouge
     
    supprime ça à mon avis:

    if ((_errorLevel[i]).length() == 0) {
    0
    1. riri
       
      le test est bon je passe dans la boucle
      0
  3. riri
     
    si je mets :

    _errorLevel[i]=new string("test");

    cela ne compile
    pas
    0
    1. grdTonioHardware Messages postés 43 Statut Membre 12
       
      Faut mettre un S majuscule et aussi faire #include "string.h"
      0
      1. riri > grdTonioHardware Messages postés 43 Statut Membre
         
        j'ai deja un include mais de ce type
        #include <string>

        et dans ce programme tout les string sont utilise avec un petit s
        les varialbles sont declarees
        string toto;
        toto = "coucou";
        et il n'y a pas de probleme
        0
      2. grdTonioHardware Messages postés 43 Statut Membre 12 > riri
         
        ok c quoi l'erreur exacte.

        sinon tu utilise les listes de la STL pour faire ton tableau ( doublement chaîné c'est mieux ).
        0
      3. Canard007 Messages postés 5954 Date d'inscription   Statut Contributeur 216 > grdTonioHardware Messages postés 43 Statut Membre
         
        le S majuscule c est pas plutot en java ;-)
        0
  4. Canard007 Messages postés 5954 Date d'inscription   Statut Contributeur 216
     
    string _errorLevel[i]=new string("test");
    0
    1. marvinrouge
       
      normal

      string _errorLevel[i]= // attend un objet de type string

      new string("test"); // est un string* (pointeur sur un objet de type string)

      donc soit tu écrit

      string _errorLevel[i]=string("test");

      soit tu changes

      1) std::string _errorLevel[NB_WARNING]
      en
      std::string* _errorLevel[NB_WARNING]
      2)cout << i << _errorLevel[i];
      en
      cout << i << (*_errorLevel[i]);
      3) à la fin du prg tu détruit les objets alloués avec new comme c
      ceci:
      for (int i=0;i<NB_WARNING;i++)
      if (_errorLevel[i]!=NULL) {
      delete _errorLevel[i];
      0
      1. riri > marvinrouge
         
        j'ai essaye ca change rien
        0
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. riri
     
    merci a tous pour votre aide

    le code etait bon mais ma methode de trace n'acceptait par les string mais uniquement les char *
    on ne voyais rien a la compil ...
    0
  7. riri
     
    merci a tous pour votre aide

    le code etait bon mais ma methode de trace n'acceptait par les string mais uniquement les char *
    on ne voyais rien a la compil ...
    0