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

MFC Discussion :

Modification d'un �l�ment dans une CList


Sujet :

MFC

Vue hybride

Message pr�c�dent Message pr�c�dent   Message suivant Message suivant
  1. #1
    Membre confirm� Avatar de nmarf
    Inscrit en
    Mai 2003
    Messages
    92
    D�tails du profil
    Informations forums :
    Inscription : Mai 2003
    Messages : 92
    Par d�faut Modification d'un �l�ment dans une CList
    Bonjour � tous,

    J'ai une CList de CLogManager (classe maison) d�finie comme il suit :
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
     
    CList<CLogManager, CLogManager&> m_logs;
    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
     
    class CLogManager
    {
    public:
    [...]
        void SetDividers(double fCrossWebDivider, double fDownWebDivider);
    [...]
     
    private:
    [...]
        double m_fDownWebDivider;
        double m_fCrossWebDivider;
    };
     
     
    void CLogManager::SetDividers(double fCrossWebDivider, double fDownWebDivider)
    {
        m_fDownWebDivider = fDownWebDivider;
        m_fCrossWebDivider = fCrossWebDivider;
    }
    J'essaie de modifier les deux doubles de chaque �l�ment de la liste par la fonction SetDividers() mais aucune modification n'est prise en compte.
    Je fais comme �a :
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    void CMultipleLogsManager::SetDividers(double fCrossWebDivider, double fDownWebDivider)
    {    
        POSITION pos = m_logs.GetHeadPosition();
     
        while (pos != NULL)
        {
            CLogManager& logTmp = m_logs.GetNext(pos);
            logTmp.SetDividers(fCrossWebDivider,fDownWebDivider);
        }
    }
    Il semblerait que le probl�me soit logTmp qui finalement n'est qu'une copie de l'�l�ment de la liste, mais alors, comment r�cup�rer un pointeur sur chaque �l�ment pour pouvoir faire les modifs ?

  2. #2
    R�dacteur
    Avatar de farscape
    Homme Profil pro
    D�veloppeur informatique
    Inscrit en
    Novembre 2003
    Messages
    9 055
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes C�te d'Azur)

    Informations professionnelles :
    Activit� : D�veloppeur informatique
    Secteur : High Tech - �diteur de logiciels

    Informations forums :
    Inscription : Novembre 2003
    Messages : 9 055
    Par d�faut
    salut,
    bizarre ton probleme:
    CList::GetNext

    TYPE& GetNext( POSITION& rPosition );
    TYPE GetNext( POSITION& rPosition ) const;
    Return Value
    If the list is const, GetNext returns a copy of the element at the head of the list. This allows the function to be used only on the right side of an assignment statement and protects the list from modification.
    If the list is not const, GetNext returns a reference to an element of the list. This allows the function to be used on either side of an assignment statement and thus allows the list entries to be modified.



  3. #3
    Membre confirm� Avatar de nmarf
    Inscrit en
    Mai 2003
    Messages
    92
    D�tails du profil
    Informations forums :
    Inscription : Mai 2003
    Messages : 92
    Par d�faut
    Oui, j'ai vu �a aussi dans la MFC.
    Ma CList n'est pas constante, des �l�ments sont rajout�s et d�plac�s dans d'autres fonctions.

  4. #4
    r0d
    r0d est d�connect�
    Membre exp�riment�

    Homme Profil pro
    D�veloppeur informatique
    Inscrit en
    Ao�t 2004
    Messages
    4 297
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ain (Rh�ne Alpes)

    Informations professionnelles :
    Activit� : D�veloppeur informatique

    Informations forums :
    Inscription : Ao�t 2004
    Messages : 4 297
    Billets dans le blog
    2
    Par d�faut
    Personellement, je pr�f�re utiliser des pointeurs dans mes listes. Du style:

    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    CList<CLogManager*, CLogManager*> m_logs;
    L'avantage c'est que justement, il n'y a pas d'ambiguit� sur pointeur/non pointeur. On sait qu'il s'agit de pointeur. Et puis on n'est pas oblig� de cr�er un constructeur de recopie et un operateur =.
    Enfin, c'est mon point de vue, peut-�tre y a-t-il des implications que je ne vois pas.

  5. #5
    Membre confirm� Avatar de nmarf
    Inscrit en
    Mai 2003
    Messages
    92
    D�tails du profil
    Informations forums :
    Inscription : Mai 2003
    Messages : 92
    Par d�faut
    r0d > je vais essayer de modifier avec des pointeurs, sinon je changerai toutes les CList de ce code qui n'est pas le mien par des vector<> et des list<> que je pr�f�re largement.

Discussions similaires

  1. contr�ler l'absence d'un �l�ment dans une liste donn�e
    Par gendalf37 dans le forum XSL/XSLT/XPATH
    R�ponses: 1
    Dernier message: 12/09/2005, 10h02
  2. ajout �l�ments dans une balise select
    Par wehtam dans le forum G�n�ral JavaScript
    R�ponses: 3
    Dernier message: 18/08/2005, 14h03
  3. [CR 10] Centrer verticalement un �l�ment dans une bo�te
    Par Giovanny Temgoua dans le forum SAP Crystal Reports
    R�ponses: 10
    Dernier message: 07/04/2005, 14h25
  4. Modif d'un ini dans une combo box
    Par Julien.alkaza dans le forum C++Builder
    R�ponses: 5
    Dernier message: 03/04/2005, 23h39

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