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 :

Un tableau de listes ?


Sujet :

MFC

  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    68
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Côte d'Or (Bourgogne)

    Informations forums :
    Inscription : Novembre 2005
    Messages : 68
    Par défaut Un tableau de listes ?
    Bonjour,

    Je voulais savoir s'il était possible de stocker des listes dans un tableau.
    Voila le type de liste que je voudrais stocker :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    CTypedPtrList<CObList, CElement*> m_ElementList;
    J'aimerais stocker plusieurs listes de ce type pour pouvoir les recharger utlérierement.

    Merci.

  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,
    oui c'est possible ,ta ligne de code ne nous renseigne pas trop sur la nature des éléments en jeux...
    moi j'utiliserai un CArray pour le tableau et une CList pour la liste.

  3. #3
    Membre éclairé
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    236
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2005
    Messages : 236
    Par défaut
    La classe CArray permet-elle d'ajouter autant d'element que l'utilisateur le souhaite? En gros a-t-on besoin d'allouer une taille precise pour le CArray ou alors il gere cela tout seul comme un grand?

  4. #4
    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
    la classe Carray ne gère que le type déclaré dans le template.
    elle gère sa taille toute seule , c'est l'intérêt ....

    c'est le même principe que le template vector de la stl.

  5. #5
    Membre éclairé
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    236
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2005
    Messages : 236
    Par défaut
    D'accord ca m'arange car je cherchais un equivalent des vector sur Visual.Merci

  6. #6
    Membre éclairé
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    236
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2005
    Messages : 236
    Par défaut
    J'ai donc :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    CArray<CTypedPtrList<CObList, CElement*>> m_ElementList_TempsJeu;
    c'est a dire un tableau de liste d'element

    J'ai une petite fonction qui ajoute a la suite de l'array une "case" qui est egale à l'avant derniere.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    void CUTrainDoc::AjouterTempsJeu(int nb)
    {
    	m_ElementList_TempsJeu.Add(m_ElementList_TempsJeu.ElementAt(nb-1));
    }
    qui me donne cette erreur :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    'CObject::operator =' : cannot access private member declared in class 'CObject'

  7. #7
    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
    normal, utilise une CList au lieu d'une CObList et voir faq ...
    http://c.developpez.com/faq/vc/?page...s#CListOfCList

  8. #8
    Membre éclairé
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    236
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2005
    Messages : 236
    Par défaut
    D'accord je vais regarder ca.
    Un des gros probleme c'est que je gere deja des elements avec la liste decrite dans le tableau dans une grosse partie de mon programme.
    Je t'explique :
    J'ai un espece de paint, donc a chaque fois que j'ajoute un objet ca l'ajoute dans ma liste. Est ce que la conversion de ma ObList a ma List ne va pas etre trop difficile?

  9. #9
    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
    non tu peux très bien déclarer une CList<CObject *,CObject *>

  10. #10
    Membre éclairé
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    236
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2005
    Messages : 236
    Par défaut
    J'ai vraiment un gros probleme. J'ai deja beaucoup de fonction codés avec ma liste de base, et migrer vers une CList me semble quasi impossible dans mon cas, sans mettre en peril le fonctionnement de mon appli.
    Voici la declaration de mon tableau :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    CArray<CTypedPtrList<CObList, CElement*>> m_ElementList_TempsJeu;
    Et lorsque je tente de faire ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    void CUTrainDoc::AjouterTempsJeu(int nb)
    {
    	CTypedPtrList<CObList, CElement*> m_ElementListTemp;
    	m_ElementList_TempsJeu.Add(m_ElementListTemp);
    }
    Et voici l'erreur :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     'CObject::operator =' : cannot access private member declared in class 'CObject'
    Je suis vraiment contraint d'utiliser ces listes..y'a t-il un moyen de ne plus avoir cette erreur?

    Ou alors je pourrais utiliser une fonction annexe, car mon but est de simplement d'afficher à intervalle régulier mes differents dessin. J'ai une fonction qui sauvegarde les differents element de ma liste d'elements . pourrais-je sauvegarder les differentes "vues" et les réafficher à intervalle donné par l'utilisateur. Je crains que cette situation ne soit trop "lourde", car si l'on doit sauvegarder un fichier par vue cela risque d'etre long a charger

    Merci

  11. #11
    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
    je ne vois pas ou est le probléme ...
    une CList template ou un CObList posséde les mêmes fonctions membres ..
    la seule reecriture c'est la déclaration de la CList .
    de toute façon ton code ne pourra fonctionner avec une CObList ,
    il faudra faire une classe dérivée de CObList pour rajouter l'operateur d'affectation.
    alors a choisir il sera plus simple de partir de la CList de la faq.
    de maniere général il ne faut plus utiliser les collections non template des MFC.

  12. #12
    Expert confirmé
    Avatar de Mat.M
    Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2006
    Messages
    8 540
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Novembre 2006
    Messages : 8 540
    Par défaut
    Citation Envoyé par shub
    D'accord ca m'arange car je cherchais un equivalent des vector sur Visual.Merci
    std::vector <=>CArray et CObArray et std::list<=>CList et CObList.
    Mais tu peux parfaitement utiliser les conteneurs de la STL dans un projet MFC...
    ceci dit c'est un peu bête de mélanger les 2
    Et voici l'erreur :
    Oui il faut faire hériter la classe de CObject c'est indiqué dans le MSDN , comme le dit Farscape.

    class CElement : public CObject { };

Discussions similaires

  1. [C# .NET2] tableau de List<T>
    Par gdkenny dans le forum Windows Forms
    Réponses: 2
    Dernier message: 27/04/2006, 09h10
  2. Réponses: 3
    Dernier message: 24/04/2006, 19h56
  3. [Tableaux] tableau vers liste deroulane
    Par flydragon dans le forum Langage
    Réponses: 5
    Dernier message: 12/04/2006, 16h11
  4. Pb tableau de listes chainées
    Par Beush dans le forum C
    Réponses: 4
    Dernier message: 24/11/2005, 15h43
  5. declaration d'un tableau de listes
    Par flah06 dans le forum C++
    Réponses: 1
    Dernier message: 15/11/2005, 18h16

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