<html><head><style type="text/css"><!-- DIV {margin:0px;} --></style></head><body><div style="font-family:arial,helvetica,sans-serif;font-size:10pt">Gracias David,<br><br>parece que era eso. Ya he superado ese punto con la recomendaci�n que me has dado. Cuanto me queda por aprender ... :-)<br><br>Mirar� lo de RefPrt tambi�n.<br><br>Un saludo,<br>Javier.<br><div><br></div><div style="font-family: arial,helvetica,sans-serif; font-size: 10pt;"><br><div style="font-family: times new roman,new york,times,serif; font-size: 12pt;"><font face="Tahoma" size="2"><hr size="1"><b><span style="font-weight: bold;">De:</span></b> David Lobato <dav.lobato@gmail.com><br><b><span style="font-weight: bold;">Para:</span></b> Javier Vazquez <javiervazper@yahoo.es><br><b><span style="font-weight: bold;">CC:</span></b> Jde-developers@gsyc.es<br><b><span style="font-weight: bold;">Enviado:</span></b> lun,7 junio, 2010 09:42<br><b><span style="font-weight:
bold;">Asunto:</span></b> Re: [Jde-dev] Problema "Segmentation fault" accediendo a m�todo de objeto, atributo de una clase<br></font><br><div>Hola,</div><div><br></div>Si eso es un copy&paste de tu c�digo, yo dir�a que lo que pasa es que est�s re-declarando el objeto en el �mbito del constructor:<div><br></div><div><span class="Apple-style-span" style="font-family: arial,helvetica,sans-serif; font-size: 13px;">introrob::introrobcanvas * canvas = new introrob::introrobcanvas();</span></div>
<div><font class="Apple-style-span" face="arial, helvetica, sans-serif"><br></font></div><div><span class="Apple-style-span" style="font-size: 13px;"></span><font class="Apple-style-span" face="arial, helvetica, sans-serif">Cuando lo que deber�as estar haciendo es inicializar el miembro de la clase <i>canvas </i>bien en la zona de inicializaci�n con:</font></div>
<div><font class="Apple-style-span" face="arial, helvetica, sans-serif"><br></font></div><div><font class="Apple-style-span" face="arial, helvetica, sans-serif">Introrob::Introrob() //<- ignoro si la clase se llama as�, es un ejemplo</font></div>
<div><font class="Apple-style-span" face="arial, helvetica, sans-serif">: canvas(new <span class="Apple-style-span" style="font-size: 13px;"> introrob::introrobcanvas()) {</span></font></div><div><font class="Apple-style-span" face="arial, helvetica, sans-serif"><span class="Apple-style-span" style="font-size: 13px;"></span>...</font></div>
<div><font class="Apple-style-span" face="arial, helvetica, sans-serif">}</font></div><div><font class="Apple-style-span" face="arial, helvetica, sans-serif"><br></font></div><div><font class="Apple-style-span" face="arial, helvetica, sans-serif">o bien dentro del c�digo del constructor con:</font></div>
<div><font class="Apple-style-span" face="arial, helvetica, sans-serif"><br></font></div><div><font class="Apple-style-span" face="arial, helvetica, sans-serif">...</font></div><div><font class="Apple-style-span" face="arial, helvetica, sans-serif">this->canvas = <span class="Apple-style-span" style="font-size: 13px;">new introrob::introrobcanvas(); //this-> es opcional</span><br>
</font>...</div><div><br></div><div><br></div><div>Por �ltimo te recomiendo que uses la clase <a rel="nofollow" target="_blank" href="http://library.gnome.org/devel/glibmm/unstable/classGlib_1_1RefPtr.html">RefPtr</a> para manejar punteros, de modo que no tengas que preocuparte por la gesti�n de memoria.</div>
<div><br></div><div>Espero haberte ayudado,</div><div>David.</div><div><br></div><div><br><div class="gmail_quote">2010/6/7 Javier Vazquez <span dir="ltr"><<a rel="nofollow" ymailto="mailto:javiervazper@yahoo.es" target="_blank" href="mailto:javiervazper@yahoo.es">javiervazper@yahoo.es</a>></span><br>
<blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;"><div><div style="font-family: arial,helvetica,sans-serif; font-size: 10pt; color: rgb(0, 0, 0);"><div>Hola a todos,<br><br>solicito un poco de ayuda con este problema que me est� comiendo las tardes enteras sin progreso. Conf�o en que sea f�cil de ver para los que ten�is sobrada experiencia programando en C++.<br>
<br><span style="text-decoration: underline;">Contexto del problema:<br>
</span>Estoy implementando ahora el componente introrob de la 5.0. Existe una clase "introrobgui" para el control de la interfaz gr�fica que maneja la aplicaci�n (utilizo tambi�n glade para modelar dicha interfaz).<br>
<br>He definido una clase heredada de Gnome::Canvas::Canvas, denominada "introrobcanvas", para la representaci�n de los elementos grid, robot, laser, etc, sobre el �rea canvas de la ventana. introrobgui delega en introrobcanvas, esta parte de la funcionalidad.<br>
<br>En el c�digo de la clase introrobgui, declaro un atributo objeto de la clase introrobcanvas como:<br><br> introrob::introrobcanvas * canvas;<br><br>Posteriormente lo instancio en el constructor de introrobgui como:<br>
<br> introrob::introrobcanvas * canvas = new introrob::introrobcanvas();<br><br>Hasta aqu�, todo bien. Adicionalmente, desde el constructor, puedo invocar a m�todos heredados o nuevos propios del objeto "canvas", tales
como :<br><br> canvas->set_center_scroll_region(false);<br> canvas->test(-9000,-9000);<br> vscale1->set_value(canvas->get_pixels_per_unit()*100);<br><br>El problema lo encuentro cuando desde un m�todo distinto al contructor de introrobgui, realizo la llamada a cualquiera de estos m�todos de canvas. Ah� se produce un fallo de segmentaci�n. Es decir, lo siguiente me falla:<br>
<br> bool introrobgui::on_change_value_vscale1(Gtk::ScrollType scroll, double new_value)<br> {<br> printf("vscale1=%.2f\n",new_value/100);<br> canvas->set_pixels_per_unit(0.1);<br> }<br>
<br><br><br>Disculpad mi ignorancia si la respuesta es trivial.<br><br>Gracias de antemano,<br>Javier.<br><br><span style="text-decoration: underline;"><span style="text-decoration: underline;">
</span></span><span style="text-decoration: underline;"><span style="text-decoration: underline;"><br></span></span></div>
</div><br>
</div><br>_______________________________________________<br>
Jde-developers mailing list<br>
<a rel="nofollow" ymailto="mailto:Jde-developers@gsyc.es" target="_blank" href="mailto:Jde-developers@gsyc.es">Jde-developers@gsyc.es</a><br>
<a rel="nofollow" target="_blank" href="http://gsyc.escet.urjc.es/cgi-bin/mailman/listinfo/jde-developers">http://gsyc.escet.urjc.es/cgi-bin/mailman/listinfo/jde-developers</a><br>
<br></blockquote></div><br></div>
</div></div>
</div><br>
</body></html>