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 :

simple question sur operator<


Sujet :

C++

  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Ao�t 2007
    Messages
    21
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Ao�t 2007
    Messages : 21
    Par d�faut simple question sur operator<
    Bonjour, j'utilise ce type dans un map en tant que cl� et j'ai donc besoin de surcharger l'op�rateur < :

    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    class UID
    	{
    		sf::Uint32 Type;
    		sf::Uint32 ID;
     
    	public :
     
    		inline sf::Uint32 Get_Type(){return Type;}	
    		inline void Set_Type(sf::Uint32 k){Type = k;}
    		inline sf::Uint32 Get_ID(){return ID;}
    		inline void Set_ID(sf::Uint32 k){ID = k;}
    		bool operator<(UID i);
    	};
    mais quoi que je fasse je n'arrive pas a bien d�finir mon op�rateur, voila ma derni�re tentative...
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
     
    bool Engine::UID::operator <(Engine::UID i)
    {	
    	return ((this->Get_Type() < i.Get_Type() )&& (this->Get_ID() < i.Get_ID()));
    }
    J'ai essay� de beaucoup de mani�re diff�rentes mais le compilateur (visual c++ 2005) n'arrive pas � faire correspondre apparemment.

  2. #2
    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 : 51
    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
    Tout d'abord, un tel op�rateur a souvent avantage a �tre d�crit comme une fonction libre, et non comme une fonction membre. Ca permet d'�tre plus homog�ne entre les arguments en terme de conversion de donn�es.

    Ensuite, un op�rateur< valide doit r�pondre � certains crit�re, qui d�finissent ce qu'on appelle un strict weak ordering.
    http://www.developpez.net/forums/sho...2&postcount=11

    Dans ton cas, si on a comme couples {Type, Id} a = {0, 1} et b = {1, 0} c = {1, 2}, alors on a :
    - a n'est pas inf�rieur � b, b n'est pas inf�rieur � a => a et b sont �quivalents ?
    - a<c, mais b pas inf�rieur � c, ce qui n'est pas possible si a et b sont �quivalents...

    G�n�ralement, pour cha�nes les < de donn�es membre, on fait plut�t du code style :
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    if (type1 == type2)
      return id1<id2
    else
      return type1<type2;
    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.

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Ao�t 2007
    Messages
    21
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Ao�t 2007
    Messages : 21
    Par d�faut
    Merci beaucoup pour ta r�ponse, je comprend bien ce qui ne va pas, mais en fait je m'�tais dit que vu que chaque objet va �tre unique:
    - soit de m�me type mais ID diff�rents forc�ment
    - soit de type diff�rents et ID peut �tre �gal

    ben logiquement il n'y a pas de confusion...

    Mais mon compilateur pense diff�remment lol, donc je sens que je vais �tre oblig� d'affecter un ID global, ou alors autre chose...

    C'est vraiment bizarre qu'un pr�dicat aussi simple ne soit pas accept�...

  4. #4
    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 : 51
    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
    Citation Envoy� par Champignon_atomik Voir le message
    Merci beaucoup pour ta r�ponse, je comprend bien ce qui ne va pas, mais en fait je m'�tais dit que vu que chaque objet va �tre unique:
    - soit de m�me type mais ID diff�rents forc�ment
    - soit de type diff�rents et ID peut �tre �gal

    ben logiquement il n'y a pas de confusion...
    Dans l'exemple que j'ai donn� avec a, b et c, il n'y a pas deux ids ni deux types identiques, pourtant il y a bien probl�me.

    Citation Envoy� par Champignon_atomik Voir le message
    Mais mon compilateur pense diff�remment lol, donc je sens que je vais �tre oblig� d'affecter un ID global, ou alors autre chose...
    Qu'est ce qui ne te plais pas dans ma proposition ?
    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.

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Ao�t 2007
    Messages
    21
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Ao�t 2007
    Messages : 21
    Par d�faut
    En fait je viens de trouver l'erreur, j'ai mis une fonction amie et �a marche super bien donc plus besoin de se casser la t�te merci de ton aide .

    (D'ailleurs tu m'avais conseill� de faire �a au d�but)

+ R�pondre � la discussion
Cette discussion est r�solue.

Discussions similaires

  1. Simple question sur les pointeurs
    Par Clad3 dans le forum C++
    R�ponses: 9
    Dernier message: 29/06/2006, 01h05
  2. question sur operator>>
    Par LaseLiep dans le forum C++
    R�ponses: 4
    Dernier message: 15/05/2006, 23h18
  3. simple question sur du html avec frames
    Par Thordax dans le forum G�n�ral JavaScript
    R�ponses: 3
    Dernier message: 03/05/2006, 11h48
  4. job... question sur "Operating Systems"
    Par luta dans le forum Autres Logiciels
    R�ponses: 6
    Dernier message: 05/04/2006, 14h36
  5. R�ponses: 5
    Dernier message: 13/10/2005, 12h46

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