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

C++ Discussion :

problème pour delete un tableau d'objets


Sujet :

C++

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Février 2011
    Messages
    3
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Février 2011
    Messages : 3
    Points : 8
    Points
    8
    Par défaut problème pour delete un tableau d'objets
    Bonjour,

    J'aimerais effacer un tableau d'objet proprement, mais il se trouve que j'ai une erreur un peu bizarre.

    error C2440: 'delete'*: impossible de convertir de 'Bouton' en 'void *'
    Aucun opérateur de conversion définie par l'utilisateur disponible qui puisse effectuer cette conversion, ou l'opérateur ne peut pas être appelé


    Voici ce que j'essaie de faire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
     
    for(int i = 0; i < this->nbBouton; i++){
    		delete(this->lesBoutons[i]);
    	}
     
    delete[](lesBoutons);
    et voici ma classe bouton

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    Bouton::Bouton(int x, int y, int width, int height)
    {
    	this->x = x;
    	this->y = y;
    	this->width = width;
    	this->height = height;
    }
     
    Bouton::~Bouton()
    { 
    }
    Question 1:
    Il y a que des primitives dans ma classe bouton, je suis obligé de redéfinir le destructeur ?

    Question 2:
    Je ne comprend pas trop le message d'erreur, qu'est-ce qu'il ne va pas ?

    Bien à vous

  2. #2
    r0d
    r0d est déconnecté
    Expert éminent

    Homme Profil pro
    tech lead c++ linux
    Inscrit en
    Août 2004
    Messages
    4 262
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : tech lead c++ linux

    Informations forums :
    Inscription : Août 2004
    Messages : 4 262
    Points : 6 680
    Points
    6 680
    Billets dans le blog
    2
    Par défaut
    Bonjour,

    tu ne nous donnes pas assez de détails pour que nous puissions te répondre.
    Montres-nous, par exemple, la définition entière de la classe Bouton (le .h). Et puis, le bout de code que tu donnes semble sorti de nulle part. On se sait pas à quoi this se réfère, ni ce qu'est this->lesBoutons.
    « L'effort par lequel toute chose tend à persévérer dans son être n'est rien de plus que l'essence actuelle de cette chose. »
    Spinoza — Éthique III, Proposition VII

  3. #3
    Membre éprouvé

    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    533
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2008
    Messages : 533
    Points : 1 086
    Points
    1 086
    Par défaut
    1) Une liste d'initialisation serait plus simple et plus performante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    Bouton::Bouton(int x, int y, int width, int height) :
    x(x), y(y), width(width), height(height)
    {
    }
    2) Si tu as défini lesBoutons comme ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    class Bouton
    {
    //...
    private:
    Bouton lesBoutons[nbBoutons];
    };
    alors tu n'as pas besoin d'appeler delete dans ton code (c'est même tout à fait proscrit). Le contenu du tableau sera automatiquement détruit après l'appel de Bouton::~Bouton().

    Mais pour info, l'erreur vient du fait que l'opérateur delete devrait être utilisé sur un pointeur (Bouton*) issu d'un new, et ce n'est pas ce que renvoie l'appel de this->lesBoutons[i].

  4. #4
    Rédacteur/Modérateur
    Avatar de JolyLoic
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2004
    Messages
    5 463
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Yvelines (Île de France)

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

    Informations forums :
    Inscription : Août 2004
    Messages : 5 463
    Points : 16 213
    Points
    16 213
    Par défaut
    Un petit rappel : Pour gérer les tableaux proprement et simplement, il y a vector (ou array si le nombre d'éléments est fixe connu à la compilation).
    Ma session aux Microsoft TechDays 2013 : Développer en natif avec C++11.
    Celle des Microsoft TechDays 2014 : Bonnes pratiques pour apprivoiser le C++11 avec Visual C++
    Et celle des Microsoft TechDays 2015 : Visual C++ 2015 : voyage à la découverte d'un nouveau monde
    Je donne des formations au C++ en entreprise, n'hésitez pas à me contacter.

Discussions similaires

  1. Problème pour remplir un tableau d'objet
    Par bobinouze dans le forum Collection et Stream
    Réponses: 5
    Dernier message: 26/12/2009, 18h55
  2. Problème pour remplir un tableau.
    Par sandball22 dans le forum C
    Réponses: 2
    Dernier message: 02/05/2007, 14h54
  3. [MySQL] Problème pour trier un tableau
    Par jojo57 dans le forum PHP & Base de données
    Réponses: 3
    Dernier message: 11/04/2007, 13h12
  4. problème pour trier un tableau de hashage
    Par Jasmine80 dans le forum Langage
    Réponses: 1
    Dernier message: 25/02/2007, 13h02
  5. [Tableaux] Problème pour contrôler un tableau
    Par renaud26 dans le forum Langage
    Réponses: 5
    Dernier message: 10/04/2006, 11h45

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