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 :

Probleme suppression d'un objet d'une collection


Sujet :

MFC

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    16
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 16
    Points : 11
    Points
    11
    Par défaut Probleme suppression d'un objet d'une collection
    Bonsoir a tous;

    Voilà mon problemme concerne la suppression d'un objet dans une collection, d'apres MSDN il "suffit" juste d'utiliser l'operateur " delete ", mais apparement le "suffit" d'MSDN ne me suffit pas ...

    Ma Classe Acteur:
    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
    40
    41
    42
     
    class acteur  :public Personne {
    	DECLARE_SERIAL(acteur)
    private:
    	int C_nbapparition;
    	double C_cachet;
    public:
    	acteur();
    	acteur(const acteur &act){
    		C_ID=act.C_ID;
    		C_nom=act.C_nom;
    		C_prenom=act.C_prenom;
    		C_ville=act.C_ville;
    		C_cachet=act.C_cachet;
    		C_nbapparition=act.C_nbapparition;
     
    	}
    	int get_nbapparition();
    	double  get_cachet();
    	void set_nbapparition(int nbapp);
    	void set_cachet(double cachet);
    	void init_acteur(int ID, CString prenom, CString nom,CString ville,int nbapparition,double cachet);
    	void serialize(CArchive &ar);
        acteur& operator=( const acteur &act){
    		C_ID=act.C_ID;
    		C_nom=act.C_nom;
    		C_prenom=act.C_prenom;
    		C_ville=act.C_ville;
    		C_cachet=act.C_cachet;
    		C_nbapparition=act.C_nbapparition;
    		return *this;
    	}
    	void afficher(){
    		cout << "numero de l'acteur : "<< C_ID << endl; 
    		printf("Nom de l'acteur : %s\n",C_nom);
    		printf("Prenom de l'acteur %s\n",C_prenom);
    		cout <<"Cachet de l'acteur : "<< get_cachet() << endl;
    	}
    	void operator delete ( void *act){
    		free(act);
    	}
    };

    Ma collection
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    typedef CArray <acteur,acteur&> Mesacteurs;
    Mesacteurs listeact;
    ma fonction ^^
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    void supprimer(CString nom){
      for (int i=0;i<listeact.GetSize();i++){
    	if (nom==listeact.GetAt(i).get_nom()){
    		delete listeact.GetAt(i); // l'erreur se trouve ici
    	}
    }
    }
    Et les erreurs :
    D:\Mes documents\codage C++\Collection_serialisation_c++\PTIcorrige\PTI.cpp(125) : error C2440: 'delete' : cannot convert from 'class acteur' to ''
    No user-defined-conversion operator available that can perform this conversion, or the operator cannot be called


    Merci d'avance et bonne soirée ^^

  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
    Points : 17 323
    Points
    17 323
    Par défaut
    salut,
    tu fais fausse route...,
    supprime ta definition de delete dans ta classe .
    la seule chose que tu as a faire c'est de supprimer une entrée de ton array pas de liberer son contenu.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    void supprimer(CString nom){
      for (int i=0;i<listeact.GetSize();i++){
        if (nom==listeact.GetAt(i).get_nom()){
            listeact.RemoveAt(i); 
                    break; 
        }
    }
    }

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    16
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 16
    Points : 11
    Points
    11
    Par défaut
    Merci beacoup beacoup ^^

    Et moi ki me cassait la tête .

    @bientôt

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [Débutant] Problème suppression objet dans une collection
    Par ziggy76 dans le forum VB.NET
    Réponses: 2
    Dernier message: 11/03/2014, 23h16
  2. [VB.NET] Suppression d'objets dans une collection
    Par master56 dans le forum VB.NET
    Réponses: 7
    Dernier message: 03/06/2010, 21h46
  3. Hibernate + suppression d'objets dans une collection
    Par Saiyan54 dans le forum Hibernate
    Réponses: 2
    Dernier message: 15/12/2006, 15h39
  4. Réponses: 4
    Dernier message: 10/08/2006, 09h25
  5. [Hibernate] Suppression d'un element d'une collection
    Par K-Kaï dans le forum Hibernate
    Réponses: 8
    Dernier message: 31/05/2006, 15h15

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