Précédent   Forum du club des développeurs et IT Pro > C et C++ > Bibliothèques > wxWidgets
wxWidgets Forums d'entraide pour la programmation wxWidgets en C++
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse
 
Outils de la discussion
Publicité
'
Vieux 05/10/2011, 18h49   #1
l'unique
Nouveau Membre du Club
 
Inscription : mars 2010
Messages : 115
Détails du profil
Informations forums :
Inscription : mars 2010
Messages : 115
Points : 30
Points : 30
Par défaut Vecteurs

bonjour, je n'arrive pas à résoudre un problème concernant un vecteur utilisant wxWidgets,
j'ai un vecteur dans lequel se trouve des triangles (coordonnées, couleur), deplus dans une boite de dialogue, concernant les propriétés des triangle, je n'arrive pas à supprimer un triangle en récuperant son numéro grâce à un GetSelection() sur un
wxListBox *LBox_triangle, lorsque je veut supprimer un triangle, il ya une erreur de segmentation, (car j'essaye de supprimer un triangle qui est déjà supprimer?), je ne sais pas si ma condition est mauvais dans le code ou pas.

voici le code :
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
 
void GestionTriangleDialog::delTriangle( wxCommandEvent& event )
{
	unsigned int item;
	unsigned int size = ( (CMainFrame*)GetParent() )->getTabTri().size();
	item = LBox_triangle->GetSelection();
 
	if(item >= 0 && item < size)
	{
		( (CMainFrame*)GetParent() )->getTabTri().erase( ((CMainFrame*)GetParent())->getTabTri().begin() + item );
		LBox_triangle->Delete( item );
		((CMainFrame*)GetParent())->Refresh();
	}
 
}
voici ce que me donne gdb :
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
 
Program received signal SIGSEGV, Segmentation fault.
0x008a0faa in wxObject::Ref(wxObject const&) () from /usr/lib/libwx_baseu-2.8.so.0
(gdb) bt
#0  0x008a0faa in wxObject::Ref(wxObject const&) () from /usr/lib/libwx_baseu-2.8.so.0
#1  0x08056bb8 in wxObject::operator=(wxObject const&) ()
#2  0x0805755c in wxGDIObject::operator=(wxGDIObject const&) ()
#3  0x0805757a in wxColourBase::operator=(wxColourBase const&) ()
#4  0x08057598 in wxColour::operator=(wxColour const&) ()
#5  0x08057e4e in Triangle::operator=(Triangle const&) ()
#6  0x08058c1f in Triangle* std::__copy_move<false, false, std::random_access_iterator_tag>::__copy_m<Triangle*, Triangle*>(Triangle*, Triangle*, Triangle*) ()
#7  0x08058a69 in Triangle* std::__copy_move_a<false, Triangle*, Triangle*>(Triangle*, Triangle*, Triangle*)
    ()
#8  0x0805f432 in __gnu_cxx::__normal_iterator<Triangle*, std::vector<Triangle, std::allocator<Triangle> > > std::__copy_move_a2<false, __gnu_cxx::__normal_iterator<Triangle*, std::vector<Triangle, std::allocator<Triangle>
Merci de votre compréhension.
l'unique est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/10/2011, 12h42   #2
Buzz57
Invité de passage
 
Homme Laglasse Michel
administrateur Unix
Inscription : août 2011
Messages : 3
Détails du profil
Informations personnelles :
Nom : Homme Laglasse Michel
Localisation : Belgique

Informations professionnelles :
Activité : administrateur Unix

Informations forums :
Inscription : août 2011
Messages : 3
Points : 3
Points : 3
Bonjour,

Vu que je ne suis pas une bête en gdb && c++, j'ai du mal à voir, à partir de la trace, sur quelle ligne il plante...

En tout cas, je ne vois pas de problème dans ton code; ça m'a l'air bon.

Quand je tombe sur un crash de ce genre, je commence d'abord par m'assurer que je suis bien là où je le pense. En d'autres termes, je commencerais par afficher la valeur de LBox_triangle->GetCount(), histoire d'être sûr que je pointe bien vers la bonne listbox.

A+
Buzz
Buzz57 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/10/2011, 13h30   #3
wxXav
Membre confirmé
 
Avatar de wxXav
 
Homme Xavier Perrissoud
Développeur amateur
Inscription : décembre 2008
Messages : 135
Détails du profil
Informations personnelles :
Nom : Homme Xavier Perrissoud
Localisation : France

Informations professionnelles :
Activité : Développeur amateur

Informations forums :
Inscription : décembre 2008
Messages : 135
Points : 226
Points : 226
Hello

Citation:
Envoyé par Buzz57 Voir le message
Vu que je ne suis pas une bête en gdb && c++, j'ai du mal à voir, à partir de la trace, sur quelle ligne il plante...
Pas mieux

Par contre, tu peux de ton côté placer des breakpoints afin de trouver la ligne exacte qui fait planter l'application.

@+
Xav'
wxXav est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/10/2011, 18h28   #4
l'unique
Nouveau Membre du Club
 
Inscription : mars 2010
Messages : 115
Détails du profil
Informations forums :
Inscription : mars 2010
Messages : 115
Points : 30
Points : 30
mon problème est résolu, il fallait que je fasse un getter et un setteur sur mon vecteur...
l'unique est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Cette discussion est résolue.
Outils de la discussion

Navigation rapide


Fuseau horaire GMT +2. Il est actuellement 09h56.


 
 
 
 
Partenaires

Hébergement Web