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++

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  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 averti
    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
    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 026
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    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 026
    Par défaut
    Bonjour,

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

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

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

    Informations forums :
    Inscription : Mai 2007
    Messages : 1 048
    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.

  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.

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