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 :

Probleme de destructeur


Sujet :

C++

  1. #1
    Futur Membre du Club
    Inscrit en
    Avril 2008
    Messages
    11
    Détails du profil
    Informations forums :
    Inscription : Avril 2008
    Messages : 11
    Points : 6
    Points
    6
    Par défaut Probleme de destructeur
    Bonjour a tous,
    J'ai un petit probleme avec un destructeur sur le code suivant :


    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
    43
    44
    class CScanData;
     
    typedef struct SChannelConfig { 
    	EChannelID ID;						
    	EChannelType Type;					
    	CString sName;						
    	int nController;					
    	int nDeviceNumber;					
    	CString sUnitName;					
    	double dCoeffA;						
    	double dCoeffB;						
    	CString sProcessString;				
    	CString sFilename;					
    	int nSrcChannel;					
    	int nSrcRegion;						
     
    	CScanData *pFileSource;				
    	unsigned long * pCounterBuf;		
    	short * pAnalogBuf;					
     
    	SChannelConfig() {
    		ID = eCIDUser1;
    		Type = eCTypeProcessed;
    		sName = "";
    		nController = 0;
    		nDeviceNumber = 0;
    		sUnitName = "";
    		dCoeffA = 0;
    		dCoeffB = 0;
    		sProcessString = "";
    		sFilename = "";
    		nSrcChannel = 0;
    		nSrcRegion = 0;
    		pFileSource = NULL;
    		pCounterBuf = NULL;
    		pAnalogBuf = NULL;
    	}
     
    	~SChannelConfig() {
    		if(pFileSource != NULL) {
    			delete pFileSource;
    			pFileSource = NULL;
    		}
    	}
    quand je le debbug, j'ai le message suivant :

    warning C4150: deletion of pointer to incomplete type 'CScanData'; no destructor called
    1> c:\stxm_dev\prog\devstxmcontrol_vs2005\Globals.h(219) : see declaration of 'CScanData'

  2. #2
    Expert éminent sénior
    Avatar de Mat.M
    Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2006
    Messages
    8 382
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Novembre 2006
    Messages : 8 382
    Points : 20 453
    Points
    20 453
    Par défaut
    quand je le debbug, j'ai le message suivant :
    C'est plutot à la compilation pas au déboguage
    Le message est assez explicite ; il n'ya pas de destructeur déclaré pour CscanData

  3. #3
    Membre expérimenté

    Profil pro
    Inscrit en
    Juin 2006
    Messages
    1 294
    Détails du profil
    Informations personnelles :
    Localisation : Royaume-Uni

    Informations forums :
    Inscription : Juin 2006
    Messages : 1 294
    Points : 1 543
    Points
    1 543
    Par défaut
    Salut,

    Vraisemblablement il manque un
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    #include "CscanData.hpp"
    MAT.

  4. #4
    Expert confirmé
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Décembre 2003
    Messages
    3 549
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Décembre 2003
    Messages : 3 549
    Points : 4 625
    Points
    4 625
    Par défaut
    Tu ne peux pas appeler un destructeur sur un type incomplet.

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

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

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 379
    Points : 41 573
    Points
    41 573
    Par défaut
    Note aussi que dès qu'il y a des pointeurs, tu dois gérer toi-même la copie et l'affectation :
    • soit en rendant la classe non-copiable et non-assignable (en déclarant constructeur de copie et opérateur d'affectation privés, sans leur donner d'implémentation)
    • soit en écrivant toi-même un constructeur de copie et un opérateur d'affectation appropriés (l'idiome Copy-and-swap peut t'être utile pour écrire l'opérateur d'affectation.

Discussions similaires

  1. [MFC] probleme sur le destructeur
    Par sebpsi dans le forum MFC
    Réponses: 3
    Dernier message: 04/04/2008, 15h48
  2. probleme sur destructeur virtuel
    Par exhortae dans le forum C++
    Réponses: 5
    Dernier message: 01/03/2008, 07h32
  3. probleme destructeur
    Par cilies38 dans le forum Langage
    Réponses: 5
    Dernier message: 14/03/2006, 18h07
  4. probleme de delete dans un destructeur
    Par Chewbi dans le forum C++
    Réponses: 6
    Dernier message: 12/03/2006, 00h29
  5. probleme de destructeur
    Par mikebranque dans le forum C++
    Réponses: 4
    Dernier message: 03/03/2006, 17h31

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