IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C++ Discussion :

pb d’utilisation de string dans une classe


Sujet :

C++

  1. #1
    Membre averti
    Inscrit en
    Février 2006
    Messages
    23
    Détails du profil
    Informations forums :
    Inscription : Février 2006
    Messages : 23
    Par défaut pb d’utilisation de string dans une classe
    Salut
    Je n’arrive pas à utiliser le type string dans mon projet

    Je modifie mon implémentation d’un algorithme pour qu’il utilise le type string au lieu du char* (avec le char* il fonctionnai normalement)

    voici le code

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    // project_header.h
    #include<string>
    class Blowfish
    {
          private:
          int var1, var2;
     
          public:
          void f1(string);
          void Cypher(string, string);
          void Decypher(string, string);
    };
     
    //***************************************************
     
    // clacc.cpp
    #include"project_header.h"
    #include<string>
     
    void Blowfish::f1(string PswString){
         unsigned char PswSize=PswString.length();
         char * Psw=PswString.data();
         // etc...
    }
     
    void Blowfish::Cypher(string StrOne, string StrTwo){
       char * SrcName=StrOne.data();
       char * DestName=StrTwo.data();
       // etc...
    }
     
    void Blowfish::Decypher(string StrOne, string StrTwo){
       char * SrcName=StrOne.data();
       char * DestName=StrTwo.data();
       // etc..
    }
     
    //***************************************************
     
    // main.cpp
    #include<string>
    #include <iostream>
    #include"project_header.h"
     
    int main()
    {
        string a;
        Blowfish Raghda;
        Raghda.f1("aa");
        Raghda.Cypher("c:\\a.txt", "c:\\b.txt");
        Raghda.Decypher("c:\\b.txt", "c:\\c.txt");
     
        system("pause");
    }
    Mais maintenant que j’ai modifier les paramètre des fonction membre de la classe pour qu’ils utilisent le string, à la compilation il me rapporte plusieurs erreurs :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    projetc_header.h  line 9   'string' has not been declared
    projetc_header.h  line 9   ISO C++ forbids declaration of 'parameter' with no type
    projetc_header.h  line 10  'string' has not been declared
    projetc_header.h  line 10  'string' has not been declared
    projetc_header.h  line 10  ISO C++ forbids declaration of 'parameter' with no type
    projetc_header.h  line 10  ISO C++ forbids declaration of 'parameter' with no type
    projetc_header.h  line 11  'string' has not been declared
    projetc_header.h  line 11  'string' has not been declared
    projetc_header.h  line 11  ISO C++ forbids declaration of 'parameter' with no type
    projetc_header.h  line 11  ISO C++ forbids declaration of 'parameter' with no type
     
    main.cpp          line 9   'string' undeclared (first use this function)
    main.cpp          line 9   (each indeclared identifier is reported only once dor each function it appears in)
    main.cpp          line 9   expected ';' before "a"
    main.cpp          line 11  invalid conversion from 'const char*' to 'int'
    main.cpp          line 11    initializing argument 1 of 'void Blowfish;;f1(int)'
    ...
    je ne peus donc pas utilisez le string comme le char ou int?

  2. #2
    Rédacteur

    Avatar de Matthieu Brucher
    Profil pro
    Développeur HPC
    Inscrit en
    Juillet 2005
    Messages
    9 810
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Développeur HPC
    Secteur : Industrie

    Informations forums :
    Inscription : Juillet 2005
    Messages : 9 810
    Par défaut
    La classe string se trouve dans le namespace std.

  3. #3
    Rédacteur
    Avatar de Laurent Gomila
    Profil pro
    Développeur informatique
    Inscrit en
    Avril 2003
    Messages
    10 651
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2003
    Messages : 10 651
    Par défaut
    De plus il y a quelques erreurs, tu devrais jeter un oeil à la FAQ C++.

  4. #4
    Membre averti
    Inscrit en
    Février 2006
    Messages
    23
    Détails du profil
    Informations forums :
    Inscription : Février 2006
    Messages : 23
    Par défaut
    j'ai remplacé les string avec les std::string mais il ya toujour l'erreur:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    class.cpp  line7   invalid conversion from 'const char*' to 'char*'
    class.cpp  line11  invalid conversion from 'const char*' to 'char*
    pourtant, dans le code suivant il me le convertit bien:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    #include<iostream>
    #include<string>
     
    void f(std::string a)
    {  std::cout << a << std::endl;  }
     
    int main()
    {
        f("toto");
        system("pause");
        return 0;
    }
    Citation Envoyé par Laurent Gomila
    De plus il y a quelques erreurs, tu devrais jeter un oeil à la FAQ C++.
    peux tu me dire ou sont les erreurs?

  5. #5
    Expert confirmé
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Décembre 2003
    Messages
    3 549
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Décembre 2003
    Messages : 3 549
    Par défaut
    L'erreur est claire non ?

  6. #6
    Membre averti
    Inscrit en
    Février 2006
    Messages
    23
    Détails du profil
    Informations forums :
    Inscription : Février 2006
    Messages : 23
    Par défaut
    Citation Envoyé par loufoque
    L'erreur est claire non ?
    oui mais je ne pansai pas que c'est impossible car on initialise bien un char* avec un const char* (char *x="toto")
    avec la méthode c_str() j'ai la même erreur qu'avec data()
    dans la faq ils déclarent un tableau dynamique. est-ce la seule solution?

  7. #7
    Expert confirmé
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Décembre 2003
    Messages
    3 549
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Décembre 2003
    Messages : 3 549
    Par défaut
    La solution c'est d'écrire const char* et pas char*.

  8. #8
    Membre averti
    Inscrit en
    Février 2006
    Messages
    23
    Détails du profil
    Informations forums :
    Inscription : Février 2006
    Messages : 23
    Par défaut
    merci

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Encoder une String en HTML dans une classe
    Par joKED dans le forum ASP.NET
    Réponses: 1
    Dernier message: 24/07/2007, 16h33
  2. Réponses: 8
    Dernier message: 09/07/2005, 23h10
  3. Thread dans une classe ?
    Par Sephi dans le forum Threads & Processus
    Réponses: 7
    Dernier message: 07/03/2004, 18h16
  4. Fonction callback dans une classe
    Par julian_ross dans le forum MFC
    Réponses: 8
    Dernier message: 02/03/2004, 11h42
  5. Réponses: 6
    Dernier message: 24/07/2003, 12h39

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo