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 :

CList problème afxtempl


Sujet :

MFC

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    473
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 473
    Par défaut CList problème afxtempl
    Bonjour à tous,

    J'ai un problème sur un projet MFC.
    J'ai deux classes standard C++ (non MFC) et dans l'une des deux je voudrais faire une liste de type de mon autre classe standard.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    #pragma once
    #include <afxtempl.h>
    #include "Gage.h"
     
    class CEmprunteur 
    {
      ...
      CList<CGage> tabGage;
      ...
    }
    Seulement ceci me renvoit cette erreur :
    Error 1 error C2248: 'CObject::operator =' : cannot access private member declared in class 'CObject' c:\program files\microsoft visual studio 8\vc\atlmfc\include\afxtempl.h 781

    Il me renvoit la meme erreur si j'essaye de créer une liste de CString !!

    Je ne comprend vraiment pas.

    Je vous remercie des réponses que vous pourrez m'apporter.

  2. #2
    Expert éminent
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 393
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France

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

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 393
    Par défaut
    Le compilo n'arrive pas à copier un objet dont la classe dérive de CObject (pour moi, ce doit être ce que tu appelles "une classe MFC" par opposition aux classes "standard C++") parce que l'opérateur d'affectation de CObject est private...

    Mon conseil: Soit tu transforme ta classe en classe C++ standard (tu ne la fais plus dériver de CObject, quoi) soit tu définis un constructeur de copie et un opérateur d'affectation pour ta classe dérivée.
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

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

    Informations forums :
    Inscription : Juin 2005
    Messages : 473
    Par défaut
    Mais mes classes standard C++ (CEmprunteur, CGage) ne dérivent pas de CObject....

    Et le problème vient bien de cette ligne :
    Si je l'enleve le compilateur ne me fait pas d'erreur....

  4. #4
    Expert éminent
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 393
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France

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

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 393
    Par défaut
    Elles ont un constructeur de copie ?

    On peut voir leur définition de classe (les déclarations des variables et fonctions membre, quoi)
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

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

    Informations forums :
    Inscription : Juin 2005
    Messages : 473
    Par défaut
    Pas de contructeur par recopie mais je ne crois pas que cela soit nécessaire ici puisque les variables membres ne sont pas dynamique au sens ou ce n'est pas moi qui gére la mémoire.

    Voici la définition de la classe Emprunteur :

    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
     
    class CEmprunteur 
    {
     
    public:
    	CEmprunteur();
    	virtual ~CEmprunteur();
     
     
    private:
    	int id;
    	CString Nom;
    	CString Prenom;
    	CString Adresse;
    	CString Telephone;
    	//CList<CGage> tabGage;
     
    public:
    	void putName(CString nom);
    	void putPrenom(CString prenom);
    	void putTelephone(CString tel);
    	void putAdresse(CString adr);
     
    	CString getNom();
    	CString getPrenom();
    	CString getAdresse();
    	CString getTelephone();
    };
    Et la définition de la classe Gage :

    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 CGage
    {
    public:
    	CGage(void);
    	void putName(CString nom);
    	void putValeur(int valeur);
    	CString getName();
    	int getValeur();
    public:
    	~CGage(void);
    private:
    	CString NomObjet;
    	int valeur;
    };

  6. #6
    Expert éminent
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 393
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France

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

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 393
    Par défaut
    Tu dis que tu as la même erreur quand tu crées une liste de CString...
    Tu as essayé en supprimant les CString de la classe CGage ?
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

Discussions similaires

  1. [MFC][Visual 2005] Problème CList
    Par samtheh dans le forum MFC
    Réponses: 1
    Dernier message: 17/06/2006, 23h26
  2. Problème d'installation oracle 8.1.7 sous NT
    Par Anonymous dans le forum Installation
    Réponses: 7
    Dernier message: 02/08/2002, 14h18
  3. Problème d'impression
    Par IngBen dans le forum C++Builder
    Réponses: 7
    Dernier message: 22/05/2002, 11h37
  4. Problème avec la mémoire virtuelle
    Par Anonymous dans le forum CORBA
    Réponses: 13
    Dernier message: 16/04/2002, 16h10
  5. Réponses: 6
    Dernier message: 25/03/2002, 21h11

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