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 :

warning: deprecated conversion from string constant to ‘char*’


Sujet :

C++

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Août 2007
    Messages
    43
    Détails du profil
    Informations forums :
    Inscription : Août 2007
    Messages : 43
    Par défaut warning: deprecated conversion from string constant to ‘char*’
    Bonjour,

    J'obtiens le warning :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    warning: deprecated conversion from string constant to ‘char*’
    En fait, j'utilise les exceptions et j'ai un code de ce type :
    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
    #ifndef MONEXCEPTION_H
    #define MONEXCEPTION_H
     
    #include <stdexcept>
     
    class MonException : public std::exception{
     
    	private :
    	char* texte;
     
    	public :
    	MonException();
    	MonException(char* texte);
    	const char* what() const throw() {return this->texte;}
    };
     
    #endif
    Du coup, lorsque je fais "throw MonException("Un message"), j'obtiens ce warning, et je ne sais pas comment m'en débarrasser.
    Que dois-je faire ? (Je veux que le code soit propre en corrigeant ce warning, pas donner des options au compilateur pour que ce dernier soit ignoré).

    Merci.

  2. #2
    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
    Les chaînes littérales du type "mon message" sont en lecture seule, elles ne sont pas censées être modifiées. Du coup leur type est non pas char*, mais const char*. C'est donc ce type que ta classe doit manipuler.

    D'une manière générale il faut toujours bien veiller à utiliser le mot-clé const autant que nécessaire, c'est-à-dire à chaque fois qu'une variable ne va pas être modifiée par le code qui l'utilise.

  3. #3
    Invité
    Invité(e)
    Par défaut
    Vu qu'il n'est pas logique de modifier la chaine de caractère dans ton exception, tu peux rajouter un const :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    class MonException : public std::exception{
     
    	private :
    	const char* texte;
     
    	public :
    	MonException();
    	MonException(const char* texte);
    	const char* what() const throw() {return this->texte;}
    };

  4. #4
    Membre averti
    Inscrit en
    Août 2007
    Messages
    43
    Détails du profil
    Informations forums :
    Inscription : Août 2007
    Messages : 43
    Par défaut
    Merci pour vos réponses.

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

Discussions similaires

  1. Réponses: 13
    Dernier message: 27/03/2013, 10h43
  2. Réponses: 2
    Dernier message: 08/12/2009, 12h57
  3. Conversion String en hexa char special
    Par Jahz dans le forum Langage
    Réponses: 1
    Dernier message: 03/08/2007, 15h52
  4. [C++.Net] Conversion de String en char
    Par tunisienne84 dans le forum MFC
    Réponses: 3
    Dernier message: 27/04/2006, 16h41
  5. error: invalid conversion from `const wxChar*' to `CHAR*'
    Par barbarello dans le forum wxWidgets
    Réponses: 16
    Dernier message: 31/01/2006, 11h28

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