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 :

CArray de structure


Sujet :

MFC

Vue hybride

Message pr�c�dent Message pr�c�dent   Message suivant Message suivant
  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    3
    D�tails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Avril 2004
    Messages : 3
    Par d�faut CArray de structure
    bonjour,

    voici mon probleme;

    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
     
    struct struct2
    {
          int a;
          int b;
    }
    struct struct1
    {
          int x;
          CArray<struct2,struct2> array2;
    }
     
    CArray<struct1,struct1> m_array;
    struct1 structure1;
    struct2 structure2;
     
    structure2.a = 1;
    structure2.b = 1;
     
    structure1.array2.Add(structure2);
     
    //lorsque je fait
    m_array.Add(structure1)
    jobtient l'erreur suivante;
    error C2664: 'Add' : cannot convert parameter 1 from 'struct struct1 ' to 'struct struct1'.
    Il me semble qu'il y avait qqchose de sp�cial � faire pour que �a fonctionne, d�finir un op�rateur = ou qqchose du genre...

    toute aide sera grandement appr�ci�

    cybz
    [FARSCAPE :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
    bonjour,
    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
     
    class struct1
    {
    public:
      struct1(){}
      struct1(const struct1 &var)
      {
    	  if(this != &var) 
    	  {
    		  // traitement
    	  }
      }
      virtual struct1 & operator = (const struct1 &src)
      {
    	  if(this != &src) 
    	  {
    		  // traitement
    	  }
    	  return *this;
      }
     
    public:
          int x;
     
          CArray<struct2,struct2> array2;
    };
    Serait plus appropri�.
    A partir du moment ou tu as mis un Carray dans ta classe le template Carray a besoin d'un constructeur de copie et de l'op�rateur d'affectation quand c'est un type simple comme la structure struct2 les m�canismes par d�faut de copie par d�faut sont invoqu�s (copie octets / octets des zones m�moires).
    note perso: ton code gagnerait en lisibilite si tu utilisais des noms autres que struct1 et struct2 rien de pire pour Compr�hension et la maintenance apres .

  3. #3
    Futur Membre du Club
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    3
    D�tails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Avril 2004
    Messages : 3
    Par d�faut
    Salut farscape,
    merci pour ta r�ponse

    alors c'est bien cela, il me manque l'operateur d'affectation.
    J'ai un peu de difficult� avec cette notion du c++, je n'ai presque jamais
    utilis�...

    Est ce que je peut mettre la d�finition de l'op�rateur directement dans ma structure, sans cr�er de classe? Et je me demande un peu quoi mettre
    dedans aussis..

    il est vrai que struct1 et struct2 n'est pas le mieux pour la compr�hension, j'avais mis c'est nom pour mon exemple..

    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
    31
    32
    33
    34
     
     
    struct SDebitCredit
    {
    	COleDateTime	dtDate;
    	CString			csDesc;
    	int				iCat;
    	double			dVal;
    };
     
    struct SCycle
    {
    	//constructeur de copie
    	SCycle(const SCycle &var) 
    	{
    		if(this != &var) 
    		{ 
                            // traitement 
    		} 
    	}
     
    	//operateur d'affectation
    	virtual SCycle & operator = (const SCycle &src) 
    	{
    		if(this != &src) 
    		{ 
    			// traitement 
    		} 
    		return *this; 
    	}
     
    	COleDateTime	dtDebut;
    	CArray<SDebitCredit,SDebitCredit> TDebitCredit;
    };
    j'ai fait ces modifications, (sans mettre de traitement ds le constructeur et l'op�rateur), et �a compile maintenant!

    Maintenant je dois copier les donn�es ds le constructeur et l'op�rateur,
    mais je ne suis pas s�r comment le faire..

    Si je peut encore sollicit� ton aide..

    p.s je vais faire attention aux balise!..

    cybz

  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
    salut,
    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
    31
    32
    33
    34
    35
    36
    37
    38
    39
     
    struct SCycle
    {
       SCycle()
       {
    	   dtDebut=COleDateTime::GetCurrentTime();
       }
       void CopyFrom(const SCycle &var)
       {
    		TDebitCredit.RemoveAll();
    		dtDebut=var.dtDebut;
    		for(int i=0;i<var.TDebitCredit.GetSize();i++)
    			TDebitCredit.Add(var.TDebitCredit[i]);
       }
     
       //constructeur de copie
       SCycle(const SCycle &var)
       {
          if(this != &var)
          {
             // traitement
    	  CopyFrom(var);
          }
       }
     
       //operateur d'affectation
       virtual SCycle & operator = (const SCycle &src)
       {
          if(this != &src)
          {
             // traitement
             CopyFrom(src);
          }
          return *this;
       }
     
       COleDateTime   dtDebut;
       CArray<SDebitCredit,SDebitCredit> TDebitCredit;
    };
    �a devrait etre bon.

  5. #5
    Futur Membre du Club
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    3
    D�tails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Avril 2004
    Messages : 3
    Par d�faut
    Merci beaucoup, �a fonctionne bien
    bonne fin de journ�e!

    cybz

+ R�pondre � la discussion
Cette discussion est r�solue.

Discussions similaires

  1. recuperation de la structure d'une base
    Par pascalT dans le forum 4D
    R�ponses: 7
    Dernier message: 07/06/2006, 15h32
  2. [tables syst�mes] extraction de la structure d'une base
    Par laffreuxthomas dans le forum Autres SGBD
    R�ponses: 6
    Dernier message: 23/03/2006, 13h24
  3. [VB6] [Fichier] Enregistrer des variables de structure
    Par de.bo dans le forum VB 6 et ant�rieur
    R�ponses: 4
    Dernier message: 07/10/2002, 11h09
  4. Structure de donn�es de type "RECORD"
    Par chaours dans le forum VB 6 et ant�rieur
    R�ponses: 2
    Dernier message: 30/09/2002, 17h10
  5. longueur d'une structure
    Par bohemianvirtual dans le forum C
    R�ponses: 6
    Dernier message: 28/05/2002, 18h31

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