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 :

Egalité de deux pointeurs


Sujet :

C++

Vue hybride

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

    Informations forums :
    Inscription : Février 2005
    Messages : 183
    Par défaut Egalité de deux pointeurs
    Bonjour,

    J'ai une classeA qui contient un "vector<ClasseB>* ".

    Je suis en train de créer une fonction qui compare l'égalité entre le pointeur passé en paramètre "ClasseB* lePointeur" et tous les pointeurs contenus dans le vector de la classeA.

    Hors, je n'arrive pas à tester ce cas car apparemment il y'a un problème de surcharge d'opérateur. Mais c'est là où c'est triste puisque c'est bien l'adresse pointée que je cherche à testé et non l'objet lui même.

    Dans l'espoir que vous puissiez m'aider, je vous remercie.

  2. #2
    Expert confirmé

    Avatar de pottiez
    Homme Profil pro
    Développeur C++
    Inscrit en
    Novembre 2005
    Messages
    7 152
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur C++
    Secteur : Industrie

    Informations forums :
    Inscription : Novembre 2005
    Messages : 7 152
    Par défaut
    Un peut de code pour nous éclairer ?

    normalement ceci devrait fonctionner :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    bool present = false ;
    for(i=0;i<monVector.size();i++){
      if(monVector[i] == lePointeur){
        present = true ;
      }
    }

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2005
    Messages
    183
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 183
    Par défaut
    Normallement oui, malheureusement cela ne fonctionne pas :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
     
     
    void CollectionPrimitives::Supprimer(Primitive* unePrimitive)
    {
       unsigned int i = 0;
       bool finRecherchePrimitive = false;
     
       do
       {
          if (i < this->Primitives->size())
          {
             if (this->Primitives[i] == unePrimitive)
             {
                finRecherchePrimitive = true;
             }
             else
             {
                i++;
             }
          }
          else
          {
             finRecherchePrimitive = true;
          }
       }
       while (finRecherchePrimitive);
     
       // en développement
     
    }

  4. #4
    Expert confirmé

    Avatar de pottiez
    Homme Profil pro
    Développeur C++
    Inscrit en
    Novembre 2005
    Messages
    7 152
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur C++
    Secteur : Industrie

    Informations forums :
    Inscription : Novembre 2005
    Messages : 7 152
    Par défaut
    Pourquoi fait tu si compliqué (boucle do{ }while()), alors que le for est si simple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    void CollectionPrimitives::Supprimer(Primitive* unePrimitive)
    {
      unsigned int i ;
      bool trouve = false;  
      for(i=0;i<this->Primitives->size();i++){
        if(this->Primitives[i] == unePrimitive){
          trouve = true ;
          break ;
        }
      }
      //reste du code ;
    }

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2005
    Messages
    183
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 183
    Par défaut
    La n'est pas la question mais puisqu'on en parle, je n'aime pas le break, et je l'utilise quasiment jamais.

  6. #6
    Expert confirmé

    Avatar de pottiez
    Homme Profil pro
    Développeur C++
    Inscrit en
    Novembre 2005
    Messages
    7 152
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur C++
    Secteur : Industrie

    Informations forums :
    Inscription : Novembre 2005
    Messages : 7 152
    Par défaut
    Oui mais est ce qu'avec ce code ca fonctionne ou ca ne fonctionne pas non plus ?

  7. #7
    Expert confirmé
    Avatar de Luc Hermitte
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2003
    Messages
    5 292
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Août 2003
    Messages : 5 292
    Par défaut
    Pourquoi vous faites compliqué alors que std::find et std::find_if nous tendent les bras ?

    Sinon, truc très bizarre. Le vecteur est géré via un pointeur. C'est contre productif. De plus, c'est un vecteur de primitives et non de primitive*, chose que tu reçois dans add().

    Enfin, la question la plus importante de toutes : es-tu sûr que l'on pourra toujours passer des pointeurs vers primitives pour les recherches ? En général, on a des critères particuliers et on veut chercher les éléments qui vérifient ces critères. Attention de ne pas tomber dans le piège de créer un nouveau Primitive à la volée et de chercher cet élément.
    Blog|FAQ C++|FAQ fclc++|FAQ Comeau|FAQ C++lite|FAQ BS|Bons livres sur le C++
    Les MP ne sont pas une hotline. Je ne réponds à aucune question technique par le biais de ce média. Et de toutes façons, ma BAL sur dvpz est pleine...

  8. #8
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2005
    Messages
    183
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 183
    Par défaut
    Sinon, truc très bizarre. Le vecteur est géré via un pointeur. C'est contre productif.
    Pourrais tu argumenter la-dessus s'il te plait car ça m'intéresse.

    De plus, c'est un vecteur de primitives et non de primitive*, chose que tu reçois dans add().
    Je ne comprend pas ce que tu veux dire ? C'est bien un vecteur de Primitive* :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    std::vector<Primitive>* Primitives;
    es-tu sûr que l'on pourra toujours passer des pointeurs vers primitives pour les recherches ?
    oui

    Attention de ne pas tomber dans le piège de créer un nouveau Primitive à la volée et de chercher cet élément.
    Alors là je ne comprend encore moins ce à quoi tu fais référence. Pourquoi veux tu que je crée un objet Primitive ?

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

Discussions similaires

  1. egalité de deux tableaux
    Par kevinou55 dans le forum Débuter
    Réponses: 8
    Dernier message: 02/11/2008, 01h16
  2. Deux Pointeurs pascal
    Par Atanas dans le forum Langage
    Réponses: 3
    Dernier message: 13/09/2007, 09h44
  3. Egalité entre deux champs NULL ?
    Par AyaGizmo dans le forum SQL
    Réponses: 2
    Dernier message: 08/06/2007, 11h42
  4. [JDOM] Egalite de deux noeuds
    Par DoubleU dans le forum Format d'échange (XML, JSON...)
    Réponses: 4
    Dernier message: 12/05/2007, 13h19
  5. Réponses: 4
    Dernier message: 24/07/2006, 14h30

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