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

SL & STL C++ Discussion :

STL Problème avec une liste d'instances de class


Sujet :

SL & STL C++

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé

    Profil pro
    Inscrit en
    Août 2006
    Messages
    213
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 213
    Par défaut STL Problème avec une liste d'instances de class
    Bonjour,
    Donc voila, au départ j'utilisai une instance de class unique ( pas de liste ), et tout marchait bien. Ayant besoin d'un certain nombre de ces instances, je décide donc de les regrouper dans une "list" de la std. Mais voila, après beaucoup de tentatives et de bidouilles, rien a faire, cela ne fonctionne pas correctement et je ne comprend pas pourquoi. Actuellement pas d'erreur à la compilation, mais lorsque le programme s'exécute, l'instance qui devrait afficher une image à l'écran n'affiche rien, mais ne génére pas d'erreur lors de l'exécution du prog.

    Voici un regroupement des lignes interressantes STL :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
     
    list <Cbowl> Lbowl;
    list <Cbowl>::iterator Ibowl;
     
    Cbowl A_bowl;
    Lbowl.push_back(A_bowl);
    Lbowl.begin()->initpos(0,430,1);
    Lbowl.begin()->draw();
    Apparament, ça vient du fait que données de la class ne se modifient pas, mais je suis pas à l'aise avec les pointeurs.

  2. #2
    Membre confirmé
    Homme Profil pro
    Architecte de système d'information
    Inscrit en
    Mai 2002
    Messages
    94
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Architecte de système d'information

    Informations forums :
    Inscription : Mai 2002
    Messages : 94
    Par défaut
    Salut, as tu des pointeurs membre de ta classe Cbowl qui pointent sur des objets créé dynamiquement ? Si tu en as il faut absolument que tu définisse un constructeur de recopie qui copie correctement ces membres dynamiques !!

    L'erreur que tu peux avoir serait sur le push_back.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Lbowl.push_back(A_bowl);
    en fait, l'objet inséré dans ta liste n'est pas l'objet A_bowl, mais une copie de celui-ci. Cette copie doit donc être correcte !

    Tu vois ou je veux en venir ? Sinon fais voir le code de Cbowl.

  3. #3
    Rédacteur
    Avatar de Bakura
    Homme Profil pro
    Étudiant
    Inscrit en
    Septembre 2005
    Messages
    1 386
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Septembre 2005
    Messages : 1 386
    Par défaut
    Citation Envoyé par BruceBoc
    Bonjour,
    Donc voila, au départ j'utilisai une instance de class unique ( pas de liste ), et tout marchait bien. Ayant besoin d'un certain nombre de ces instances, je décide donc de les regrouper dans une "list" de la std. Mais voila, après beaucoup de tentatives et de bidouilles, rien a faire, cela ne fonctionne pas correctement et je ne comprend pas pourquoi. Actuellement pas d'erreur à la compilation, mais lorsque le programme s'exécute, l'instance qui devrait afficher une image à l'écran n'affiche rien, mais ne génére pas d'erreur lors de l'exécution du prog.

    Voici un regroupement des lignes interressantes STL :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
     
    list <Cbowl> Lbowl;
    list <Cbowl>::iterator Ibowl;
     
    Cbowl A_bowl;
    Lbowl.push_back(A_bowl);
    Lbowl.begin()->initpos(0,430,1);
    Lbowl.begin()->draw();
    Apparament, ça vient du fait que données de la class ne se modifient pas, mais je suis pas à l'aise avec les pointeurs.
    Et en faisant
    Lbowl.at(0)->initpos (0,430,1)
    Lbowl.at(0)->draw()
    ?

    EDIT : après reflexion, ce ne sont pas des pointeurs que tu mets dans ta liste, donc c'est
    Lbowl.at(0).initpos (0, 430, 1)
    Lbowl.at(0).draw ();;

  4. #4
    Rédacteur
    Avatar de Laurent Gomila
    Profil pro
    Développeur informatique
    Inscrit en
    Avril 2003
    Messages
    10 651
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2003
    Messages : 10 651
    Par défaut
    Et en faisant Lbowl.at(0)->initpos (0,430,1) ?
    Attention à ne pas confondre avec std::vector. Si on pouvait accéder aux éléments d'une liste via des indices, ça ne servirait à rien
    Par contre on peut utiliser Lbowl.front().initpos(...).

    Je pencherai aussi pour une mauvaise gestion de la copie au niveau de la classe stockée.

  5. #5
    Rédacteur
    Avatar de Bakura
    Homme Profil pro
    Étudiant
    Inscrit en
    Septembre 2005
    Messages
    1 386
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Septembre 2005
    Messages : 1 386
    Par défaut
    Citation Envoyé par Laurent Gomila
    Attention à ne pas confondre avec std::vector. Si on pouvait accéder aux éléments d'une liste via des indices, ça ne servirait à rien
    Par contre on peut utiliser Lbowl.front().initpos(...).

    Je pencherai aussi pour une mauvaise gestion de la copie au niveau de la classe stockée.
    Ah je pensais que ça fonctionnait pareil... Mais je comprends pas, dans sa liste il ne met pas de pointeur, pouruquoi il utilise :

    Lbowl.begin()->initpos(0,430,1);
    Lbowl.begin()->draw();

    begin() renvoi un pointeur vers le premier élément ?

  6. #6
    Expert confirmé
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Décembre 2003
    Messages
    3 549
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

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

    Informations forums :
    Inscription : Décembre 2003
    Messages : 3 549
    Par défaut
    begin() renvoi un pointeur vers le premier élément ?
    Un itérateur, qui se comporte comme un pointeur.

  7. #7
    Rédacteur
    Avatar de Bakura
    Homme Profil pro
    Étudiant
    Inscrit en
    Septembre 2005
    Messages
    1 386
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Septembre 2005
    Messages : 1 386
    Par défaut
    Citation Envoyé par loufoque
    Un itérateur, qui se comporte comme un pointeur.
    Et pourquoi il n'utilise pas son iterateur (Ibowl) pour ça ?

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

Discussions similaires

  1. [WD10]Problème avec une liste
    Par Louis Griffont dans le forum WinDev
    Réponses: 11
    Dernier message: 25/05/2007, 08h40
  2. STL : Bug avec une list
    Par Winder dans le forum SL & STL
    Réponses: 1
    Dernier message: 10/05/2007, 04h03
  3. Problème avec une liste chainée
    Par 0v3rb1t dans le forum C
    Réponses: 3
    Dernier message: 08/05/2007, 19h27
  4. Problème avec une liste.
    Par Baban29 dans le forum Général JavaScript
    Réponses: 6
    Dernier message: 26/04/2007, 12h12
  5. [Débutant] problème avec une liste déroulante
    Par stan21 dans le forum Access
    Réponses: 3
    Dernier message: 12/07/2006, 14h52

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