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

Discussion :

Problème avec QSet et QDate

  1. #1
    Nouveau Candidat au Club
    Inscrit en
    Octobre 2011
    Messages
    1
    Détails du profil
    Informations forums :
    Inscription : Octobre 2011
    Messages : 1
    Points : 1
    Points
    1
    Par défaut Problème avec QSet et QDate
    Bonjour a tous,

    C'est la première fois que je poste un message sur ce forum donc j'espère d'une part ne pas mettre tromper d'endroit pour exposer mon probleme et que celui ci n'a pas déjà été abordé.

    Je suis actuellement de développer un application en C++/Qt et je suis confronté un petit problème.

    Je veux stocker des dates, en l'occurrence des QDate, de manière à ce qu'elles soient triées et sans doublons donc je me suis naturellement tourné vers la classe QSet.

    Mon problème est le suivant lorsque que je veux insérer un QDate dans mon QSet<QDate> la compilation me retourne une erreur.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    QSet<QDate> s;
    QDate d(2001, 10, 14);
    s.insert(d);
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    error: no matching function for call to ‘qHash(const QDate&)
    Personnellement, je penche pour deux explication, la première on ne peut pas faire de QSet<QDate> et à ce moment là je fais comment ?
    La deuxième on peut le faire mais il y a un truc a faire pour que ca marche.

    Merci à tous ceux qui prendront de le temps de m'aider.

  2. #2
    Membre habitué
    Avatar de bobti89
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    86
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Janvier 2005
    Messages : 86
    Points : 150
    Points
    150
    Par défaut
    Il y a une troisième explication !
    Tout simplement QSet n'est pas adapté à ton problème.
    Utilise QMap, ça marchera beaucoup mieux
    bob ou bob, vous ne voyez pas la différence. Pourtant il y en a une fondamentale, l'un est écrit à l'endroit, l'autre à l'envers.

  3. #3
    Membre expérimenté

    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2009
    Messages
    1 009
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2009
    Messages : 1 009
    Points : 1 738
    Points
    1 738
    Par défaut
    Citation Envoyé par bobti89 Voir le message
    Il y a une troisième explication !
    Tout simplement QSet n'est pas adapté à ton problème.
    Utilise QMap, ça marchera beaucoup mieux
    Faudrait développer un peu, parce que je ne suis pas d'accord avec ça. QSet serait exactement ce qu'il lui faudrait, sauf que l'explication c'est qu'il n'y a aucune implémentation pour garantir l'unicité entre des QDate. Donc à défaut, on doit le faire nous même avec une QHash (plus rapide que la QMap) en gérant des couples clef/valeur. QSet est en effet une utilisation pratique et automatique du QHash avec les types les plus courants (d'où l'erreur qui ne parle pas de QSet).

    Ceci dit, ça peut t'être utile si t'as besoin, de faire ta propre classe QDateSet, qui fonctionnent comme un QSet (gestion cachée d'un QHash) mais pour les dates. Ou alors t'utilises directement le QHash dans ton code.

    Ou alors si tu tiens aux QSet, ça accepte les QString, donc tu stockes les dates avec toString() et tu les récupères avec fromString().

  4. #4
    Membre habitué
    Avatar de bobti89
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    86
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Janvier 2005
    Messages : 86
    Points : 150
    Points
    150
    Par défaut
    Citation Envoyé par drag006 Voir le message
    Je veux stocker des dates, en l'occurrence des QDate, de manière à ce qu'elles soient triées et sans doublons donc je me suis naturellement tourné vers la classe QSet.
    C'est simplement ce détail qui m'a guidé directement vers une QMap. (C'est pour moi la définition même d'une map ) De plus l'operator< est déjà défini pour une QDate !
    bob ou bob, vous ne voyez pas la différence. Pourtant il y en a une fondamentale, l'un est écrit à l'endroit, l'autre à l'envers.

  5. #5
    Membre expérimenté

    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2009
    Messages
    1 009
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2009
    Messages : 1 009
    Points : 1 738
    Points
    1 738
    Par défaut
    Je n'ai pas pensé que "trier" pouvait vouloir dire "ordonner". Il souhaite trier les dates, or QMap s'ordonne en fonction des clefs, et ici il n'est pas question de clefs. Si les dates deviennent les clefs d'une QMap pour ordonner, on met quoi dans les valeurs ?

    Du coup comme on utilise pas de clef/valeur, je pense que le plus propre est d'utiliser une QList<QDate>, avec qSort() pour trier (ou plus rapide, faire sa propre fonction qui insère au bon endroit dans la QList et seulement si la liste ne contient pas déjà la date). En tout cas y'a plusieurs solutions

Discussions similaires

  1. VC++ Direct3D8, problème avec LPD3DXFONT et LPD3DTEXTURE8
    Par Magus (Dave) dans le forum DirectX
    Réponses: 3
    Dernier message: 03/08/2002, 11h10
  2. Problème avec [b]struct[/b]
    Par Bouziane Abderraouf dans le forum CORBA
    Réponses: 2
    Dernier message: 17/07/2002, 10h25
  3. Problème avec le type 'Corba::Any_out'
    Par Steven dans le forum CORBA
    Réponses: 2
    Dernier message: 14/07/2002, 18h48
  4. Problème avec la mémoire virtuelle
    Par Anonymous dans le forum CORBA
    Réponses: 13
    Dernier message: 16/04/2002, 16h10

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