Partage
  • Partager sur Facebook
  • Partager sur Twitter

[C++] objet string

error: 'string' does not name a type

Sujet résolu
Anonyme
    20 décembre 2006 à 23:03:02

    Ce problème à été résolu, mais il en reste encore un plus bas...merci de m'aider


    Bonjour/Bonsoir/Bonne Nuit à tous! ;)

    J'ai une petie question sur le dernier chapitre de M@téo21 (le 5 eme du C++), que je viens tout juste de lire.

    J'ai créé une structure dans laquelle j'utilise l'objet string. Je vous la donne :


    struct scors
    {
        int rouge;
        int bleu;
        SDL_Surface* surface_texte;
        SDL_Rect position_texte;
        string texte;
    };



    Et quand je compile, il me donne une erreur que je ne comprends pas très bien. le sens de l'erreur, je le comprends, mais je ne comprends pas pourquoi... :(

    Voici l'erreur en question :

    error: 'string' does not name a type


    cette erreur s'applique à la ligne "string texte;" de ma structure.

    Merci de m'aider à résoudre mon problème!

    A bientôt

    Hiura
    • Partager sur Facebook
    • Partager sur Twitter
      20 décembre 2006 à 23:06:11

      salut,
      a tu ecris cette ligne :
      using namespace std;
      ?

      Je pense que c'est ca le problème.
      Si tu ne veux pas l'ecrire, remplace string texte par std::string texte (j'ai pas essayer mais je crois que c'est bon).

      A+
      • Partager sur Facebook
      • Partager sur Twitter
      Anonyme
        20 décembre 2006 à 23:10:15

        Merci beaucoup!

        Le problème venait bien du sdt::, j'y avais pas pensé car c'était dans un .h...

        Il y a une autre erreur dans mon code, mais ça je la garde pour moi :p (j'aime les erreurs!!)

        A bientôt!
        • Partager sur Facebook
        • Partager sur Twitter
        Anonyme
          21 décembre 2006 à 20:26:51

          Rebonjour à tous!

          J'ai pas réussis à résoudre un des sous problème de ce problème...

          Quoi je ne suis pas explicite??


          Ok j'explique :) . Voici mon code :

          prototype.h

          using namespace std;
          struct scors
          {
              int rouge;
              int bleu;
              SDL_Surface* surface_texte;
              SDL_Rect position_texte;
              string texte;
          };



          scors.cpp

          void afficher_scors(scors* scors‚ SDL_Color couleur_texte‚
                             SDL_Color couleur_fond‚ TTF_Font* police‚ SDL_Surface* ecran)
          {
              scors–>texte =
                           ("Scors : Rouge : " + scors–>rouge + " Bleu : " + scors–>bleu);
              char* texte_c = NULL;
              texte_c = scors–>texte.c_str();
              scors–>surface_texte = TTF_RenderText_Shaded(police‚ texte_c‚
                                                             couleur_texte‚ couleur_fond);
              SDL_BlitSurface(scors–>surface_texte‚ NULL‚ ecran‚ &scors–>position_texte);
          }



          Mais il n'aime pas ma ligne :


              scors–>texte =
                           ("Scors : Rouge : " + scors–>rouge + " Bleu : " + scors–>bleu);



          Il me donne l'erreur suivante


          error : invalid operands of types 'const char*' and 'const char[9]' to binary 'operator+'



          Je ne sais pas comment procéder pour resoudre cette "chose"...Merci de m'aider (encore ;) )

          A bientôt
          • Partager sur Facebook
          • Partager sur Twitter
            21 décembre 2006 à 20:55:22

            pas besoin de mettre de parenthèse pour attribuer le texte c'est soit à la déclaration de la variable du faire
            string chaine("salut");
            ou alors
            string chaine = "salut";
            mais faut pas faire un mélange des deux surtour quand c'est pas au moment de la creation de l'instance.
            • Partager sur Facebook
            • Partager sur Twitter
              21 décembre 2006 à 21:12:40

              Pour la dernière erreur. Essayes de faire comme ça:

              scors–>texte =
                               "Scors : Rouge : ";
              scors–>texte = scors–>texte +  scors–>rouge + " Bleu : " + scors–>bleu;

              L'opérateur + ne marche qu'à partir d'un objet string. Si tu n'en utilise aucun, il ne va pas comprendre que le résultat d'une tableau de char et d'un nombre doit donner un objet de type string.

              Enfin, j'ai pas essayé le code, mais ça doit être un truc comme ça :p
              • Partager sur Facebook
              • Partager sur Twitter
              Anonyme
                21 décembre 2006 à 23:11:14

                Bonne nuit à tous ;)

                Merci déjà pour vos réponse, mais (car il en faut toujours un... :euh: )

                -->Boo2M0rs0 :

                Ce que tu me propose ne marche pas, et c'est logique puisque ça ne change rien en fait...Tu ne fais en fait que de déplacer le problème, puisque scors->texte n'est pas du même type que scors->rouge... (il me crée même plus d'erreurs...)

                Mais merci quand même!


                -->dark-lord :

                Ce que tu m'explique là, je l'ai bien compris, mais je ne vois pas où j'ai fait une erreur...(ai-je bien compris?? il faut que je me remète serieusement en question moi...)

                Merci de votre aide, et merci de m'aider encore et toujours!

                A bientôt et (bonne) nuit :p
                • Partager sur Facebook
                • Partager sur Twitter
                  21 décembre 2006 à 23:42:44

                  On ajoute pas des choux et des carottes "par défaut".
                  Voilà comment on s'amuse avec un peu de connaissances en C++, rien de bien compliqué, vous verrez tout ça dans un moment dans le cours de M@teo (i hope) :

                  #include <iostream>
                  #include <string>
                  #include <sstream>

                  using namespace std;

                  string operator+(const char * string1‚const string & string2)
                  {
                          cout << "Using special + operator (char * + string)" << endl;
                          string res = string1;
                          res += string2;
                          return res;
                  }

                  string operator+(const string & string1‚int value)
                  {
                          cout << "Using special + operator (string + int) " << endl;
                          ostringstream res;
                          res << string1;
                          res << value;
                          return res.str();
                  }

                  int main(int argc‚ char ** argv[])
                  {
                          const string message = "hi !";
                          string first‚second;
                          first = "hello" + message;
                          cout << first << endl;
                          second = message + 2;
                          cout << second << endl;
                          return 0;
                  }


                  Using special + operator (char * + string)
                  hellohi !
                  Using special + operator (string + int)
                  hi !2
                  • Partager sur Facebook
                  • Partager sur Twitter
                    21 décembre 2006 à 23:47:19

                    La surcharge d'opérateurs c'est pour dans 3 chapitres normalement ;)
                    • Partager sur Facebook
                    • Partager sur Twitter

                    If you'd like to join us, read "How do we work at OpenClassrooms"! :)

                    Anonyme
                      22 décembre 2006 à 13:07:19

                      Merci de votre aide, mais puisque c'est au programme pour dans 3 chapitre, je pateinterai!
                      (Merci Kayle mais je ne suis pas sur d'avoir compris tout-tout compris...)

                      Je reprends vite fais, léquivalent en C, et ça devrais marcher pour le moment! Je modifierai ce bout plus tard!

                      A bientôt!

                      Hiura

                      PS : j'ai une question qui n'a rien à voir, mais qui est si mineur que je ne vais pas faire un nouveau post pour ça..

                      Avec les connaissances aquises dans les cours C/C++, as-t-on le niveau pour créer des grilles de sudoku? (pour ce qui est de l'algorithme de création, c'est mon problème.)

                      Je ne demande ni code, mais juste un oui ou un non...

                      Merci d'avance
                      • Partager sur Facebook
                      • Partager sur Twitter
                        22 décembre 2006 à 13:26:22

                        Salut,
                        nous avons largement le niveau pour faire une grille de sudoku.

                        A+
                        • Partager sur Facebook
                        • Partager sur Twitter
                        Anonyme
                          22 décembre 2006 à 13:28:32

                          re-Bonjour!

                          ok merci!

                          Je vais pouvoir relever le défis alors! (c'est entre un pot et moi au cas où...)

                          A bientôt
                          • Partager sur Facebook
                          • Partager sur Twitter

                          [C++] objet string

                          × 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