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 :

Conversions implicites de QString en const char*


Sujet :

C++

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éprouvé
    Profil pro
    Inscrit en
    Février 2004
    Messages
    1 825
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2004
    Messages : 1 825
    Par défaut Conversions implicites de QString en const char*
    Bonjour à tous,


    Dans mon programme, mes données sont stockées dans des propriétés. Chaque propriété peut se convertir implicitement en "const char*" de manière à pouvoir l'afficher facilement dans l'IHM.

    J'utilise Qt et je tombe sur ce genre de fonction :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    void Fonction(const QString&);
    Que j'aimerai utiliser comme ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Fonction(pUser->GetAge());
    GetAge renvoi une TIntProperty, le compilateur peut la convertir en const char*. Et QString peut se construire à partir d'un const char*.
    Malheureusement ça ne fonctionne pas
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    const char* age = pUser->GetAge();
    Fonction(age); // ok
     
    Fonction(pUser->GetAge()); // pas ok
    L'erreur est
    impossible de convertir le paramètre 2 de 'lxw::TIntProperty' en 'const QString &'
    Je peux faire quelque chose pour remédier à ça ?
    A part expliciter une conversion en QString étant donnée que mes propriétés sont dans une librairie sans dépendance avec Qt.

    Merci,

    A bientôt

  2. #2
    Rédacteur

    Avatar de Davidbrcz
    Homme Profil pro
    Ing Supaéro - Doctorant ONERA
    Inscrit en
    Juin 2006
    Messages
    2 307
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : Suisse

    Informations professionnelles :
    Activité : Ing Supaéro - Doctorant ONERA

    Informations forums :
    Inscription : Juin 2006
    Messages : 2 307
    Par défaut
    J'ai envie de dire que la conversion implicite n'est pas transitive.

    Tu as beau pouvoir passer de lxw::TIntProperty à const char* et de const char* à QString, tu ne peux pas pour autant sauter l'étape intermédiaire qu'est le const char*.

    Pour y arriver, il faudrait QString dispose d'un constructeur attendant un lxw::TIntProperty en paramètre.

    PS: message non garanti à 100%
    "Never use brute force in fighting an exponential." (Andrei Alexandrescu)

    Mes articles dont Conseils divers sur le C++
    Une très bonne doc sur le C++ (en) Why linux is better (fr)

  3. #3
    Rédacteur/Modérateur
    Avatar de JolyLoic
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2004
    Messages
    5 463
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2004
    Messages : 5 463
    Par défaut
    Le langage n'autorise qu'une conversion utilisateur implicite entre deux types, pas un chaînage de telles conversions, sinon, ça convirtirait vraiment trop dans tous les sens.

    Donc, à part
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Fonction(QString(pUser->GetAge()));
    je ne vois pas trop.
    Ma session aux Microsoft TechDays 2013 : Développer en natif avec C++11.
    Celle des Microsoft TechDays 2014 : Bonnes pratiques pour apprivoiser le C++11 avec Visual C++
    Et celle des Microsoft TechDays 2015 : Visual C++ 2015 : voyage à la découverte d'un nouveau monde
    Je donne des formations au C++ en entreprise, n'hésitez pas à me contacter.

  4. #4
    Membre éprouvé
    Profil pro
    Inscrit en
    Février 2004
    Messages
    1 825
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2004
    Messages : 1 825
    Par défaut
    Ok, pas de soucis, je vais faire ça

    Merci

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

Discussions similaires

  1. Réponses: 2
    Dernier message: 05/08/2011, 18h13
  2. Conversion de char vers const char
    Par Lucas Panny dans le forum Visual C++
    Réponses: 9
    Dernier message: 01/09/2008, 16h36
  3. Réponses: 7
    Dernier message: 16/02/2008, 07h30
  4. conversion AnsiString en const char*
    Par Mangacker dans le forum C++Builder
    Réponses: 3
    Dernier message: 14/05/2007, 18h43
  5. Conversion CString en const char*
    Par LRobi dans le forum MFC
    Réponses: 8
    Dernier message: 19/07/2005, 12h12

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