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 :

je comprend pas pq c++ me genere cette erreur illegal implicit conversion from


Sujet :

C++

  1. #1
    Nouveau candidat au Club
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    1
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2006
    Messages : 1
    Par défaut je comprend pas pq c++ me genere cette erreur illegal implicit conversion from
    Type_A to Type_B

    The compiler encountered an illegal implicit conversion.

    The ANSI C++ language differs from ANSI C in the treatment of void*. ANSI C allows an implicit conversion from a:

    Pointer to void > to a pointer > to another object type (but not to a pointer to function type)

    In C++, a void* cannot be assigned to an object of any type other than void* without an explicit cast.

    The example below is legal ANSI C, but is not accepted in C++.

    pour ce programme:
    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
     
    ifstream * ouvrirFichierEntree( int argc, char **argv);
     
    ifstream * ouvrirFichierEntree( int argc, char **argv)
    {
       string fichierEntree;
      ifstream fichier;
      if(argc == 1)
      {			
         cout<<"Donnez le nom du fichier: ";
         cin>>fichierEntree;
      }
      else if(argc == 2 || argc == 3  )
      {
      	 fichierEntree = argv[1];
     
      }
      else 
      {
      	 cerr << "Erreur : vous n'avez pas respecte le nombre de parametre..." << endl;	
      	 return NULL ;
      }
     
    	fichier.open(fichierEntree.c_str());
     
    	if (!fichier)
        {
            cerr << "Erreur : impossible d'ouvrir le fichier en lecture..." << endl;
            return NULL;
        }
     
      return fichier;
    }


  2. #2
    Expert confirmé

    Inscrit en
    Novembre 2005
    Messages
    5 145
    Détails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 5 145
    Par défaut
    Tu déclares que ta fonction renvoie un pointeur vers ifstream et tu essaies de renvoyer un objet de type ifstream et non un pointeur vers ifstream. Le message d'erreur n'est pas trop clair parce que le compilateur regarde les conversions implicites. Hors il y a une conversion implicite de ifstream vers void* (celle dont tu t'es servi pour vérifier que le fichier avait bien été ouvert). Mais ce void* ne peux pas être converti implicitement non plus en pointeur vers ifstream. Le message d'erreur est rédigé dans l'optique où, plus familier avec le C qu'avec le C++, tu pensais qu'une telle conversion implicite existait.

    Il y a une balise code (# dans l'éditeur pour l'introduire), utilise-là, c'est plus facile à lire.

    Renvoyer un pointeur vers fichier me semble une mauvaise idée: il va falloir par après s'assurer qu'il est toujours libéré. Mais on ne peut pas retourner par valeur des streams, donc il vaut mieux écrire une fonction qui prend un stream par référence et l'initialise comme tu veux.

Discussions similaires

  1. Alors là j'comprends pas le résultat de cette requête.
    Par mouche dans le forum Requêtes et SQL.
    Réponses: 3
    Dernier message: 27/02/2008, 10h14
  2. Réponses: 2
    Dernier message: 29/01/2008, 12h04
  3. Je ne comprends pas pourquoi cette erreur
    Par amine_en_france dans le forum AWT/Swing
    Réponses: 1
    Dernier message: 09/06/2007, 22h09
  4. Comprend pas cette commande SED
    Par DIE dans le forum Shell et commandes GNU
    Réponses: 5
    Dernier message: 05/10/2006, 13h58
  5. [Boolean]Je ne comprend pas cette instruction
    Par jcachico dans le forum VB 6 et antérieur
    Réponses: 3
    Dernier message: 13/01/2006, 16h25

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