Urgent pb C++

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. 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
    1. supprime ça à mon avis:

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

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

      cela ne compile
      pas
      0
      1. Faut mettre un S majuscule et aussi faire #include "string.h"
        0
      2. @grdTonioHardwarej'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
      3. @ririok c quoi l'erreur exacte.

        sinon tu utilise les listes de la STL pour faire ton tableau ( doublement chaîné c'est mieux ).
        0
      4. Contributeur
        @grdTonioHardwarele S majuscule c est pas plutot en java ;-)
        0
    3. Contributeur
      string _errorLevel[i]=new string("test");
      0
      1. 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
      2. @marvinrougej'ai essaye ca change rien
        0
    4. 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
      1. 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