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 :

comment initialiser un tableau dans un constructeur ?


Sujet :

MFC

  1. #1
    Membre confirm� Avatar de jlassira
    Inscrit en
    Mai 2005
    Messages
    228
    D�tails du profil
    Informations forums :
    Inscription : Mai 2005
    Messages : 228
    Par d�faut comment initialiser un tableau dans un constructeur ?
    salut:

    soit la classe suivante :
    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
     
    class CCardList
    {
    public:
     
    CCard  CurrentCardList[200];
    int TotalCheckedCards,TotalIgnoredCards,TotalCards;
     
    CCardList(int);
    virtual ~CCardList(void);
     
    void AddCardtoList(CCard);
    void UpdateCheckedCards();
    void UpdateIgnoredCards();
    };
    si je veux instancier ma classe en ayant une autre taille pour le tableau " CurrentCardList" comment proceder exactement sachant que cette noucelle taille sera par exmple lu a partir de la console?

    y a t il un moyen pour declarer ce tableau d'uen fa�on dyamique permettant de le cha,ger d'une classe � une autre par exmple sans se soucier d'une taille fixe !!

    merci

  2. #2
    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
    oui. L'utilisation d'un vector r�gle tous tes probl�mes:

    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    //dans le .h (déclaration)
    vector<CCard, CCard>; //vector est l'équivalent std de CVector pour la MFC
    Ainsi, tu n'a plus qu'� utiliser vector.insert(), vector.erase(), etc. Tu n'as plus � te pr�occuper la gestion de la m�moire ni rien.
    (plus plus d'infos, vois la msdn: vector, ou CVector pour la mfc).

    Hope it helps.

  3. #3
    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
    La d�claration d'un std::vector n'est pas la m�me que celle d'un CVector. Donc :

  4. #4
    Membre confirm� Avatar de jlassira
    Inscrit en
    Mai 2005
    Messages
    228
    D�tails du profil
    Informations forums :
    Inscription : Mai 2005
    Messages : 228
    Par d�faut
    donc tu suggere que je remplace :
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
     
    CCard  CurrentCardList[200];
    par

    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
     
    vector<CCard,CCardlist>;
    c'est ca non?

  5. #5
    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
    euh, la syntaxe est fausse. C'est de ma faute, j'ai fais une erreur. En fait, il faut avant tout savoir si tu veux utiliser la mfc?

  6. #6
    Membre confirm� Avatar de jlassira
    Inscrit en
    Mai 2005
    Messages
    228
    D�tails du profil
    Informations forums :
    Inscription : Mai 2005
    Messages : 228
    Par d�faut
    oui mon application est bas�e sur MFC heureusement ...donc..?

  7. #7
    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
    Bon, j'ai encore fait une erreur: ce n'est pas CVector, mais CArray que tu dois utiliser. Voir la msdn: (http://msdn2.microsoft.com/en-us/library/4h2f09ct.aspx)

    Tu va d�clarer ton tableau ainsi:
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
     
    CArray <CCard, CCard> m_CurrentCardList;
    Pour ins�rer un �l�ment: CurrentCardList.Add();
    Pour en supprimer un: CurrentCardList.RemoveAt();
    etc.

  8. #8
    Membre confirm� Avatar de jlassira
    Inscrit en
    Mai 2005
    Messages
    228
    D�tails du profil
    Informations forums :
    Inscription : Mai 2005
    Messages : 228
    Par d�faut
    1- oui mais ou est ce que je passe l'element que je vais inserer? sachant qu'il s'agit d'inserer une classe dans un tableu de classe?

    2- pourquoi le choix de vector ne serait il pas appropri�?

  9. #9
    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
    Citation Envoy� par jlassira
    1- oui mais ou est ce que je passe l'element que je vais inserer? sachant qu'il s'agit d'inserer une classe dans un tableu de classe?
    Un exemple:

    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    MonElement* A = new MonElement(); // création d'un élément
    // MonElement est une classe quelconque qui existe déjà
    CArray<MonElement, MonElement> MonTableau; //création du tableau
    MonTableau.Add(A); //Ajout de l'element A dans le tableau.
    Pour plus de d�tails, voir la msdn (CArray)

    Citation Envoy� par jlassira
    2- pourquoi le choix de vector ne serait il pas appropri�?
    CArray est l'�quivalent MFC du vector de la std. C'est exactement pareil (sauf l'impl�mentation), sauf que la std est portable. Mais bon, si tu utilises d�j� la mfc...

  10. #10
    Membre confirm� Avatar de jlassira
    Inscrit en
    Mai 2005
    Messages
    228
    D�tails du profil
    Informations forums :
    Inscription : Mai 2005
    Messages : 228
    Par d�faut
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    include "CCard.h"
    .class CCardList
    {
    public:
     
    //CCard  CurrentCardList[200] ;
    CArray < CCard , CCard> CurrentCardList ;
    ....
    }
    le compilateur me genere une erreur au niveau de "CArray < CCard , CCard> CurrentCardList ;"

    et voi�i l'erreur:
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
     
    CCardList.h(9): error C2143: erreur de syntaxe : absence de ';' avant '<'
    CCardList.h(9): error C2501: 'CCardList::CArray' : Spécificateurs de type ou de classe de stockage manquants
    je ne comprends pas !! pourtant c la bonne syntaxe!!

  11. #11
    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
    tu as bien inclu le <afxtempl.h>?

  12. #12
    Membre confirm� Avatar de jlassira
    Inscrit en
    Mai 2005
    Messages
    228
    D�tails du profil
    Informations forums :
    Inscription : Mai 2005
    Messages : 228
    Par d�faut
    oui c'est bon merci ca compile ...je vais decouvrir ce type maintenant

  13. #13
    Membre confirm� Avatar de jlassira
    Inscrit en
    Mai 2005
    Messages
    228
    D�tails du profil
    Informations forums :
    Inscription : Mai 2005
    Messages : 228
    Par d�faut
    salut,

    malgr� que j'ai r�solu le probleme ..une petite anomaliedemeure un peu inquietante pour moi

    au fait j'ai essaye d'utiliser CArray pour construire un tableau de string ...comme suit:
    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
     
    #include "..\include\ccardlist.h"
    #include "CCard.h"
    #include <afxtempl.h>
    typedef  CArray <string,string> FBCList;
     
    ...
    FBCList CCardList::getRemainingCards(CCardList m_CurrentCardList)
    {
        FBCList UntreatedCards ;
     
    	for ( int i = 0 ; m_CurrentCardList.CurrentCardList.GetSize() ; i++)
       {
         CCard a ;
    	 if (a.getchecked() == false)
         UntreatedCards.Add(a.getFBC());	
     
       }
     
       return UntreatedCards.Copy() ;
     
    }
    le compilateur me genere l'erreur suivante au niveau de la ligne return :
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
     
    CCardList.cpp(74): error C2660: 'CArray<TYPE,ARG_TYPE>::Copy' : la fonction ne prend pas 0 arguments
            with
            [
                TYPE=std::string,
                ARG_TYPE=std::string
            ]
    comment je peux y remedier pour retourner enfin mon tableau de string? ou est l'anomalie? de quel constructeur manquant s'agit il ?

    merci

  14. #14
    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
    quelle est la signature de CCard ::getFBC() ?

    ha aussi, essaie de remplacer des string par des CString. Tant qu'� utiliser la mfc...

    [edit]argh, je n'avais pas vu: la m�thode Copy prends un argument. Voir la msdn: http://msdn.microsoft.com/library/de...ons_carray.asp[/edit]

  15. #15
    Membre confirm� Avatar de jlassira
    Inscrit en
    Mai 2005
    Messages
    228
    D�tails du profil
    Informations forums :
    Inscription : Mai 2005
    Messages : 228
    Par d�faut
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
     
    string CCard::getFBC()
    {
    	return FBC;
    }
    c'est la bonen signature ..elle retourne string exactement le type d'un elemen,t � ajouter ...je ne comprends pas!

  16. #16
    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
    voir mon post pr�c�dent

  17. #17
    Membre confirm� Avatar de jlassira
    Inscrit en
    Mai 2005
    Messages
    228
    D�tails du profil
    Informations forums :
    Inscription : Mai 2005
    Messages : 228
    Par d�faut
    alors c'est ou la faute selon vous? pourquoi je ne peux pas retourncer ce CArray ?

  18. #18
    Membre confirm� Avatar de jlassira
    Inscrit en
    Mai 2005
    Messages
    228
    D�tails du profil
    Informations forums :
    Inscription : Mai 2005
    Messages : 228
    Par d�faut
    y aura pas de problemes si je passe quand meme un string dans la variable CString? pas de conversion necessaire?

  19. #19
    Membre confirm� Avatar de jlassira
    Inscrit en
    Mai 2005
    Messages
    228
    D�tails du profil
    Informations forums :
    Inscription : Mai 2005
    Messages : 228
    Par d�faut
    j'ai essaye !! mais en vain !! je ne comprends pas une simple operation comme celle la echoue!!! pourquoi je ne peux pas retourner le resultat comme ca !

  20. #20
    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
    tu utilises mal la m�thode Copy
    Citation Envoy� par ton compilo
    'CArray<TYPE,ARG_TYPE>::Copy' : la fonction ne prend pas 0 arguments
    Voir la msdn: http://msdn.microsoft.com/library/de...ons_carray.asp

+ R�pondre � la discussion
Cette discussion est r�solue.
Page 1 sur 2 12 Derni�reDerni�re

Discussions similaires

  1. R�ponses: 7
    Dernier message: 30/01/2007, 09h48
  2. [C#] Comment intégrer un tableau dans un tableau ?
    Par tazmania dans le forum ASP.NET
    R�ponses: 57
    Dernier message: 17/08/2006, 16h59
  3. R�ponses: 5
    Dernier message: 11/05/2006, 14h15
  4. Comment d�finir un tableau dans une classe?
    Par Pragmateek dans le forum Collection et Stream
    R�ponses: 11
    Dernier message: 30/04/2006, 20h34
  5. Comment afficher un tableau dans TStringGrid ?
    Par doubledj dans le forum Composants VCL
    R�ponses: 3
    Dernier message: 19/09/2005, 02h21

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