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 :

Surcharge operator==, héritage


Sujet :

C++

  1. #1
    Invité
    Invité(e)
    Par défaut Surcharge operator==, héritage
    Hello,

    j'ai une grosse interrogation à propos de la surcharge de cet opérateur. J'essaye de me refaire la main en C++ via une petite appli graphique où il est question de fourmis.

    Seulement, il se trouve qu'une fourmi dans mon appli peut se trouver au même endroit et avoir exactement les mêmes caractéristiques qu'une autre. Pour les différencier, car je veux pouvoir le faire, est-ce utile de rajouter un identifiant propre comme un numéro ?

    Car si je parcours un tableau de fourmis à la recherche d'une en particulière, il se peut que plusieurs répondent à l'appel. Dans ce cas là, sans moyen d'identification propre, est-ce que je peux également me dire que peu importe laquelle je récupère, puisque ce sont exactement les mêmes. Encore faut-il que je sois sûr que toutes ses caractéristiques soient identiques.

    merci d'avance si vous m'éclairez sur le sujet =)

    siriru
    Dernière modification par Invité ; 11/07/2013 à 13h15. Motif: autre question

  2. #2
    Membre à l'essai
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2013
    Messages
    16
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Mai 2013
    Messages : 16
    Points : 23
    Points
    23
    Par défaut
    Bonjour,

    Pourquoi ne pas utiliser une (unordered)map ou un (unordered)set pour stocker tes fourmi plutôt qu'un vecteur?, pas de doublons autorisé donc chaque fourmie est distincte car identifié par une clef.

  3. #3
    Invité
    Invité(e)
    Par défaut
    En fait je pense que me pose la mauvaise question. Tout va venir de la sélection, je vais chercher une fourmi dans le tableau si j'ai cliqué dessus en rapport avec sa position, si je considère que je sélectionne la première qui match, c'est pareil pour la suppression, non ?

  4. #4
    Inactif  


    Homme Profil pro
    Doctorant sécurité informatique — Diplômé master Droit/Économie/Gestion
    Inscrit en
    Décembre 2011
    Messages
    9 012
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Loire (Rhône Alpes)

    Informations professionnelles :
    Activité : Doctorant sécurité informatique — Diplômé master Droit/Économie/Gestion
    Secteur : Enseignement

    Informations forums :
    Inscription : Décembre 2011
    Messages : 9 012
    Points : 23 145
    Points
    23 145
    Par défaut
    Bonjour,

    Pour les identifier, tu peux toujours utiliser leur adresse en mémoire et en utilisant this.

  5. #5
    Membre chevronné Avatar de Astraya
    Homme Profil pro
    Consommateur de café
    Inscrit en
    Mai 2007
    Messages
    1 043
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France

    Informations professionnelles :
    Activité : Consommateur de café
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mai 2007
    Messages : 1 043
    Points : 2 234
    Points
    2 234
    Par défaut
    Salut,

    As tu déjà définis les caractéristiques de tes fourmis?
    Comme déjà dis, tu peux utiliser this pour savoir si l'instance de la formi est la même en comparaison. Et utiliser un id unique (u32, std::string,.... etc... Bref tout ce qui peux identifier ta fourmi comme une carte d'identité, nous avons chacun un numéro propre).
    Puis tu peux mettre tout ça dans une map ou un set avec en clé ta carte d'identité de fourmi. Tu n'as plus que rechercher ta fourmi en comparant ton id.
    Homer J. Simpson


  6. #6
    Invité
    Invité(e)
    Par défaut
    1 - effectivement, je n'avais pas pensé à this
    mais du coup, pourquoi créer un id unique si this suffit à l'identifier ?

    2 - Je profite de mon thread pour poser une nouvelle question :
    je fais hériter tous mes éléments de jeu d'une classe Element qui a une position, une taille et un booléen pour savoir si l'élément est sélectionné ou non. J'ai une classe Manager qui gère mes éléments de jeu et qui liste d'un coté mes fourmis, d'un côté les fourmilières, la bouffe, les matières premières, etc… Donc pour le moment j'ai 3 ou 4 vector de pointeurs différents.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    private:
    	std::vector<Ant*> ants;
    	std::vector<Colony*> colonies;
            std::vector<Food*> foods
    Dans ma méthode de sélection, je vais parcourir dans l'ordre les fourmis, la bouffe et enfin les colonies, pour avoir une priorité de sélection. Cette méthode prend en paramètres la position de la souris ainsi qu'un vector de pointeur Element. Y-a-t'il une façon de passer à cette fonction mon tableau de pointeur de fourmis, de colonies ou de bouffe ? C'est surement une question stupide =)
    Comme solution j'envisage :
    • de déclarer mes 3 vectors comme des vectors Element*
    • de mettre tous mes éléments dans un seul vector
    • votre solution =) =)
    Dernière modification par Invité ; 11/07/2013 à 13h26.

  7. #7
    Membre chevronné Avatar de Astraya
    Homme Profil pro
    Consommateur de café
    Inscrit en
    Mai 2007
    Messages
    1 043
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France

    Informations professionnelles :
    Activité : Consommateur de café
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mai 2007
    Messages : 1 043
    Points : 2 234
    Points
    2 234
    Par défaut
    mais du coup, pourquoi créer un id unique si this suffit à l'identifier ?
    This est une adresse, les adresses change à chaque instance de ton application. Comment ferais tu les liens si jamais tu faisais une sauvegarde sans id? De même, si tu dois parler de la fourmi X à un serveur, tu ne vas pas envoyé this, mais un ID. SI tu créer un outils externe d'édition de fourmis, tu ne vas pas utiliser this... Si dans ton tas de fourmis tu dis, je veux la 100ème fourmi pour lui offrir un cadeau, tu vas demander la 100ème (ID 100 par exemple) et pas this... bref pour toutes ces raisons

    Dans ma méthode de sélection, je vais parcourir dans l'ordre les fourmis, la bouffe et enfin les colonies, pour avoir une priorité de sélection. Cette méthode prend en paramètres la position de la souris ainsi qu'un vector de pointeur Element. Y-a-t'il une façon de passer à cette fonction mon tableau de pointeur de fourmis, de colonies ou de bouffe ? C'est surement une question stupide =)
    Comme solution j'envisage :
    de déclarer mes 3 vectors comme des vectors Element*
    de mettre tous mes éléments dans un seul vector
    votre solution =) =)
    Je comprends pas, si tu cherche une fourmi, pourquoi ferais tu une recherche dans ton vecteur de nourriture?
    Homer J. Simpson


Discussions similaires

  1. Réponses: 16
    Dernier message: 21/05/2007, 01h04
  2. problème surcharge operator+ (UNIX)
    Par richard_sraing dans le forum Linux
    Réponses: 9
    Dernier message: 01/12/2006, 20h41
  3. [Pb de débutant, et encore] surcharge operator =
    Par 10_GOTO_10 dans le forum C++Builder
    Réponses: 5
    Dernier message: 11/01/2006, 02h30
  4. Namespace et surcharge operator new/delete
    Par ZeLegolas dans le forum C++
    Réponses: 11
    Dernier message: 26/07/2005, 13h55
  5. Réponses: 2
    Dernier message: 25/07/2004, 23h24

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