Partage
  • Partager sur Facebook
  • Partager sur Twitter

.c_str et Visual C++ 2008 == error C2228...

la partie gauche de '.c_str' doit avoir un class/struct/unio

Sujet résolu
    20 juin 2008 à 14:32:35

    Bonjour a tous,
    j'ai un problème avec la fonction .c_str et Visual C++ 2008...

    lorsque je saisi le code suivant et que je veut compiler j'ai un message d'erreur qui s'affiche...
    fstream fichier;
    fichier.open(openFileDialog1->FileName.c_str(),fstream::in|fstream::out);
    


    l'erreur est la suivante:
    error C2228: la partie gauche de '.c_str' doit avoir un class/struct/union


    le soucis que j'ai c'est que cette ligne de code marche sous C++ Builder6 alors si quelqu'un pouvais me dire soit comment résoudre le problème ou une autre façon d'avoir le même résultat cela m'aiderais beaucoup...

    Le plus rapidement possible car c'est pour un programme que je doit faire pour mon stage et il ne me reste plus que 2 semaines et suite à ce problème je suis bloqué au début de mon programme alors c'est pas très cool pour moi car si je le fini pas c'est pas le mieux si je doit refaire une stage plus tard...
    • Partager sur Facebook
    • Partager sur Twitter
    Anonyme
      20 juin 2008 à 14:42:42

      Quel est le type de FileName ?
      • Partager sur Facebook
      • Partager sur Twitter
        20 juin 2008 à 14:43:27

        openFileDialog1->FileName();
        je crois que FileName est une fonction, non?
        • Partager sur Facebook
        • Partager sur Twitter
          20 juin 2008 à 14:43:37

          Le paramètre n'est pas du type que tu crois.
          Généralement une confusion pointeur/valeur.
          • Partager sur Facebook
          • Partager sur Twitter
          C++: Blog|FAQ C++ dvpz|FAQ fclc++|FAQ Comeau|FAQ C++lite|FAQ BS| Bons livres sur le C++| PS: Je ne réponds pas aux questions techniques par MP.
            20 juin 2008 à 14:53:29

            je ne sais pas le type de FileName c'est une fonction qui retourne le nom du fichier et son ardesse choisis dans l'openFileDialog qui est "un objet graphique" tiré de la boite à outils de Visual C++...

            j'ai "le même" outils dans la bibliothèque de Builder et cette fonction marche alors voila...


            pour ceux qui ne l'aurais pas encore compris je créé un programme graphique qui doit ouvrir 2 fichier ".txt" et comparer certains de le leur éléments le soucis c'est que pour le moment j'arrive même pas a ouvrir la fenêtre alors je suis loin de la fin...
            • Partager sur Facebook
            • Partager sur Twitter
              20 juin 2008 à 14:58:39

              je crois que j'ai deja proposé la solution: openFileDialog1->FileName();
              une fonction c'est avec ()
              • Partager sur Facebook
              • Partager sur Twitter
                20 juin 2008 à 15:02:13

                oui main non
                en effet tu a déjà proposer cette solution mais cela ne marche pas il me retourne:

                error C2064: le terme ne correspond pas à une fonction qui prend 0 arguments


                donc je suis toujours bloqué avec mon problème xD

                j'ajoute au passage que tu a posté ta solution dans le temps ou j'écrivais la mienne...
                • Partager sur Facebook
                • Partager sur Twitter
                  20 juin 2008 à 15:08:19

                  Et si tu lisais la doc (ou la signature) de la fonction que tu veux appeler?
                  • Partager sur Facebook
                  • Partager sur Twitter
                  C++: Blog|FAQ C++ dvpz|FAQ fclc++|FAQ Comeau|FAQ C++lite|FAQ BS| Bons livres sur le C++| PS: Je ne réponds pas aux questions techniques par MP.
                    20 juin 2008 à 15:13:10

                    le soucis et que je ne trouve que très peut de chose dans ma doc car il n'y a pas d'exemple en C++ dedans la seul chose que je peut vous en dire c'est que je suppose que le type de l'élément est un "string" mais je n'en suis pas certains c'est mes premiers programmes sous Visual C++ avent j'utilisais Builder6...
                    • Partager sur Facebook
                    • Partager sur Twitter
                      20 juin 2008 à 15:31:20

                      Toit seul peut t'aider.
                      Commence par ouvrir le fichier où est défini le type de openFileDialog1.
                      Détermine alors le type retourner par ta fonction. A partir de là, c'est google, MSDN, ...
                      • Partager sur Facebook
                      • Partager sur Twitter
                      C++: Blog|FAQ C++ dvpz|FAQ fclc++|FAQ Comeau|FAQ C++lite|FAQ BS| Bons livres sur le C++| PS: Je ne réponds pas aux questions techniques par MP.
                        20 juin 2008 à 15:35:37

                        je ne t'ai compris là ou alors c'est toi qui m'a pas compris...

                        la fonction openFileDialog1 est une fonction implanter de base Visual C++ mon soucis viens de là je l'aurais faite moi même ça serrait bon...


                        Edit: après ma 2ème journée de recherche j'ai trouver la solution en cherchant un peux partout dans la doc...
                        je sais pas comment ça fait pour marcher mais ça marche c'est le principale :euh:
                        • Partager sur Facebook
                        • Partager sur Twitter
                          20 juin 2008 à 16:19:26

                          OpenFileDialog est une classe, openFileDialog1 est un pointeur (référence CLI) sur un objet de la classe.

                          FileName est une propriété de la classe.


                          OpenFileDialog est .NET et ne renvois pas de std::string mais un String^! Ça se mélange très mal avec la SL. Utilise les classes .NET qui permettent l'ouverture de fichiers.

                          Si tu ne veux pas faire du C++/CLI tu devrais changer de projet et y aller avec une autre librairie : MFC, Qt, dclib... dclib ou dlib est légerte et 100% compatible avec la SL.
                          • Partager sur Facebook
                          • Partager sur Twitter
                            20 juin 2008 à 16:24:34

                            merci de cette information je ne savais pas...

                            je ne connais pas le C++/CLI c'est quoi ça???

                            le soucis que l'application que je doit faire doit pouvoir tourner sur n'importe quel machine avec windows XP...

                            et comme je ne suis pas sur que ça soit le cas avec une autre bibliothèque je n'ai pas vraiment le choix je crois non?
                            • Partager sur Facebook
                            • Partager sur Twitter
                              20 juin 2008 à 16:25:38

                              Citation : Loup Solitaire

                              je ne t'ai compris là ou alors c'est toi qui m'a pas compris...

                              la fonction openFileDialog1 est une fonction implanter de base Visual C++ mon soucis viens de là je l'aurais faite moi même ça serrait bon...


                              Vu ce que je lis plus haut, ce n'est pas une fonction, mais un objet -- vu l'absence de parenthèse.
                              Et combien même, tu dois bien avoir quelque part sur ta machine la définition de cette bête. Donc, tu peux faire une recherche. Et trouver le type. Et depuis le type, soit recommencer, soit utiliser le nom du type dans google.

                              Quand je maintiens du code qui utilise des API que je ne connais pas, c'est ainsi que je procède: à coups de grep et de google. (et c'est la seule chose à retenir de mon message: comment trouver de l'info)
                              • Partager sur Facebook
                              • Partager sur Twitter
                              C++: Blog|FAQ C++ dvpz|FAQ fclc++|FAQ Comeau|FAQ C++lite|FAQ BS| Bons livres sur le C++| PS: Je ne réponds pas aux questions techniques par MP.
                                20 juin 2008 à 16:28:16

                                a ok je comprend mieux se que tu veux dire...

                                merci tout de même mais bon Google j'avais déjà pas mal donné hier j'y ai passer toute la journée a chercher des infos sans résultats...
                                • Partager sur Facebook
                                • Partager sur Twitter
                                  20 juin 2008 à 16:45:12

                                  C++/CLI == C++ .NET

                                  C'est pas vraiment du C++, c'est du C# pour les vieux programmeurs qui veulent pas trop modifiés leurs habitudes et continuer à utiliser leurs vieilles techniques... C'est pas hyper compatible le Natif (C++ compilé) et le Managed (C++/CLI).
                                  • Partager sur Facebook
                                  • Partager sur Twitter
                                    20 juin 2008 à 16:49:23

                                    a oki je comprend mieux alors car j'avais demander sur le forum de developpez.com mais bon a parts dire des thermes techniques que personne ne comprend et déplacer mon sujet c'est tout se qu'ils ont sut faire au moins ici même si vous ne m'avez pas aidez vous m'avez au moins appris des trucs que je ne savais pas...
                                    • Partager sur Facebook
                                    • Partager sur Twitter

                                    .c_str et Visual C++ 2008 == error C2228...

                                    × 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