Accueil > Forum > > > > Héritage multiple et destructeur ==> Erreur de segmentation ??
Héritage multiple et destructeur ==> Erreur de segmentation ??
mercredi 20 août 2008 à 15:03:23 |
Héritage multiple et destructeur ==> Erreur de segmentation ??

Rouliann
|
Bonjour à tous. Voilà, j'ai une classe abstraite A : class A{ private: string m_name; public: A() {m_name = "default_name";} virtual ~A() {} virtual void print() = 0; } ; et une classe template dérivée de A et de list : template< typename T > class B : public A, public list<T> { public: B() : A() {} ~B() {}} ; Et dans mon main :
main() { A *a = new B<int>[100]; delete[] a; }
Le delete[] me donne une erreur de segmentation... Notez que si je fais
A *a new B<int>; delete a;
tout marche bien. D'où peut venir le problème ?
PS: désolé pour le gras j'ai pas réussi à l'enlever...
|
|
mercredi 20 août 2008 à 17:07:01 |
Re : Héritage multiple et destructeur ==> Erreur de segmentation ??

juju12
|
Une fois la fonction print définie pour la classe B, j'ai pu exécuter sans problème.
|
|
mercredi 20 août 2008 à 18:36:26 |
Re : Héritage multiple et destructeur ==> Erreur de segmentation ??

Lucky92
|
Idem pour moi. D'ailleurs sur mon compilateur ( VS2005 ), ton code ne compile pas si print() n'est pas défini. Quel compilateur utilises-tu ?
|
|
jeudi 21 août 2008 à 10:34:14 |
Re : Héritage multiple et destructeur ==> Erreur de segmentation ??

zaibacker
|
Les méthodes virtuelles doivent être impérativement définies dans les classes dérivées ou je me trompe?
|
|
jeudi 21 août 2008 à 16:07:18 |
Re : Héritage multiple et destructeur ==> Erreur de segmentation ??

juju12
|
zaibacker : ce sont les fonctions virtuelles PURES qui doivent obligatoirement être implémentées, et même tu n'es pas obligé du moment que ta classe dérivée est une classe abstraite aussi. Mais bon en effet dans la majorité des cas...
|
|
jeudi 21 août 2008 à 22:05:39 |
Re : Héritage multiple et destructeur ==> Erreur de segmentation ??

Rouliann
|
Ah oui, j'ai oublié de le dire dans le post, mais dans mon code print() est bien définie dans B.
J'utilise g++ (4.1.2).
Pas d'autres idées ? :-)
|
|
jeudi 21 août 2008 à 22:21:42 |
Re : Héritage multiple et destructeur ==> Erreur de segmentation ??

Rouliann
|
Quand je remplace, dans le main : propertyBase *a = new property<int>[100] ; par property<int> *a = new property<int>[100] ; Ca fonctionne... Peut-être un problème au niveau des destructeurs virtuels, c'est la première fois que je m'en sers, mais j'ai rien trouvé de très précis ni avec Google, ni dans mes 2 bouquins de 500 pages :/
|
|
jeudi 21 août 2008 à 23:34:48 |
Re : Héritage multiple et destructeur ==> Erreur de segmentation ??

Rouliann
|
Et quand je supprime la dérivation par list (ie B ne dérive que de A) ca fonctionne aussi. Ce serait l'appel au destructeur de list qui poserait problème ? Oô
Là je rame... D'autant plus que le code fonctionne chez vous ^_^
|
|
vendredi 22 août 2008 à 12:20:24 |
Re : Héritage multiple et destructeur ==> Erreur de segmentation ??

Rouliann
|
Réponse acceptée !
Ca y est j'ai trouvé !! En fait il fallait faire un cast (statique ou dynamique) pour le delete[] : int main() { A *a = new B<int>[100] ; delete[] static_cast< B<int>* > (a) ; // OU delete[] dynamic_cast< B<int>* > (a) ; return 0; }
Mais bon c'est pas très pratique étant donné qu'il faut connaitre le type pour pouvoir le faire... Si quelqu'un a d'autres suggestions qu'il n'hésite pas!
|
|
vendredi 22 août 2008 à 12:29:37 |
Re : Héritage multiple et destructeur ==> Erreur de segmentation ??

juju12
|
Normalement le fait de déclarer le destructeur virtual permet d'éviter cela puisque justement le bon destructeur sera appelé.
|
|
Cette discussion est classée dans : public, erreur, name, segmentation, delete
Répondre à ce message
Sujets en rapport avec ce message
error LNK2019 [ par djidana45 ]
Bonjour tout le monde, je voulais savoir si qqu'un savait qq chose sur sur l'erreur : error LNK2019A la compilation, j'ai le message d'erreur suivant
Erreur de segmentation... Qu'est ce que c'est ??? :o [ par Rouliann ]
Salut tout le monde j'ai un gros problème et malgré tous mes essais je n'arrive pas à le résoudre... Il n'y a pas d'erreurs à la compilation mais lors
Delete [ par dido33 ]
Bonjour, voila je voudrai supprimer pour de bon un fichier sur mon disque dur.J'ain une Tdirectorylistbox qui m'indique le chemin et quand j'ai trouve
socket winsock grrr [ par dekai ]
Voilà mon pb lorsque je tente un send ou recv j'obtient une erreur et ej comprends pas pourquoi. Merci de m'aider.Voici le code (je travaille sous dev
Une erreur de segmentation que je ne comprends pas... [ par semifer ]
Voilà, je débute en C, j'ai quelques connaissances dans d'autres langages (surtout php et scripts bash). Je tourne sous plateforme Linux Debian 3.1 e
Rational Purify et le delete [ ] dans un vector [ par fuliculi ]
Bonjour à tous,j'utilise purify depuis 2 ans et il m'aide beaucoup (en particulier pour les plantages à première vue sans raison). Il y a une erreur q
Erreur sur delete[] et pb alocation mémoire [ par dan34 ]
Salut,J'ai un soucis avec le bout de code suivant. En fait j'ai créé un objet qui contient un tableau de char dont j'alloue dynamiquement la taille en
Erreur de segmentation [ par Snacksou ]
Bonjour à tous, je suis étudiant en informatique, et j'ai un algorithme à écrire. J'ai voulu le mettre en c pour le vérifier mais j'ai une erreur de s
Erreur de segmentation [ par freekid ]
Bonjour tout le monde,voila je suis débutant en programmation c++.Et ma joie s'est arrété lorsqu'une erreur impossible(pour moi) à enlever est apparue
erreur de segmentation :'( [ par by_rabbit_08 ]
Bien le bonjour...Je suis désolé, si je dérange, j'ai déjà embêter pas mal de monde avec mon problème, et dans un élan de trop grand entousiasme, j'ai
Livres en rapport
|
Derniers Blogs
[RIA SERVICES] INCLUDE ET DOMAINDATASOURCE[RIA SERVICES] INCLUDE ET DOMAINDATASOURCE par Audrey
Dans un de mes articles précédents , j'avais parlé des DomainDataSource avec RIA Services dans le cas d'une interface Maître - Détail. Dans le même principe, je vais parler d'une autre manière de mettre en forme ce cas d'interface avec RIA Services. Et po...
Cliquez pour lire la suite de l'article par Audrey ZUNE : VERSION ZUNE SOFTWARE V 4.2 ET LA SOCIALISATIONZUNE : VERSION ZUNE SOFTWARE V 4.2 ET LA SOCIALISATION par ROMELARD Fabrice
Une des nouveautés de la version V 3.0 était l'apparition de l'onglet Social qui ne fonctionnait que si le MarketPlace était activé sur son poste. Cela limitait donc son intérêt, car hors du cadre commercial USA-CANADA, peu de monde trouva...
Cliquez pour lire la suite de l'article par ROMELARD Fabrice PRATIQUE DE SILVERLIGHT PAR ERIC AMBROSIPRATIQUE DE SILVERLIGHT PAR ERIC AMBROSI par MPOWARE
Je viens de finir la lecture du dernier livre d'
Eric Ambrosi
éditions PEARSON
Son livre donne une approche pratique de Silverlight qui sera aussi bien comprise par le développeur que par le designeur.
Tous les aspects du développement RIA sont abor...
Cliquez pour lire la suite de l'article par MPOWARE APPRENDRE à DéVELOPPER POUR LES MOBILES AVEC LA NOUVELLE GéNéRATION .NETAPPRENDRE à DéVELOPPER POUR LES MOBILES AVEC LA NOUVELLE GéNéRATION .NET par odewit
2 déclinaisons de Silverlight et 2 déclinaisons de Mono permettent dorénavant (ou permettront prochainement) de développer des applications .NET mobiles pour les principales plates-formes du marché :
Silverlight pour Symbian, basé sur Silverlight 2...
Cliquez pour lire la suite de l'article par odewit ZUNE : NOUVELLE VERSION DU ZUNE SOFTWARE - V 4.2ZUNE : NOUVELLE VERSION DU ZUNE SOFTWARE - V 4.2 par ROMELARD Fabrice
Avec la dernière génération du lecteur MP3 de Microsoft, le ZUNE HD, Microsoft a publié une nouvelle version du logiciel pour PC. Ainsi, je me suis décidé à installer celle-ci sur mon Tablet PC ACER, comme toujours le logiciel est donc tél...
Cliquez pour lire la suite de l'article par ROMELARD Fabrice
Logiciels
Academy System (10.9.4.0)ACADEMY SYSTEM (10.9.4.0)Logiciel de gestion des établissements.
- élèves/étudiants (inscription, dossier, absence...)
-... Cliquez pour télécharger Academy System Xilisoft Convertisseur Vidéo Ultimate (5.1.39.0305)XILISOFT CONVERTISSEUR VIDéO ULTIMATE (5.1.39.0305)Xilisoft Convertisseur Vidéo Ultimate est un outil puissant de conversion vidéo, facile à utilise... Cliquez pour télécharger Xilisoft Convertisseur Vidéo Ultimate Xilisoft DVD Ripper Ultimate (5.0.64.0304)XILISOFT DVD RIPPER ULTIMATE (5.0.64.0304)Xilisoft DVD Ripper Ultimate est un logiciel excellent pour copier et convertir DVD vers presque ... Cliquez pour télécharger Xilisoft DVD Ripper Ultimate Rigs of Rods (63.3)RIGS OF RODS (63.3)c'est un jeu de multi-simulation camions,autobus voitures, avions, bateaux, hélicoptère avec défo... Cliquez pour télécharger Rigs of Rods
|