<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 &lt;dav.lobato@gmail.com&gt;<br><b><span style="font-weight: bold;">Para:</span></b> Javier Vazquez &lt;javiervazper@yahoo.es&gt;<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&amp;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() //&lt;- 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&nbsp;<span class="Apple-style-span" style="font-size: 13px;">&nbsp;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-&gt;canvas =&nbsp;<span class="Apple-style-span" style="font-size: 13px;">new introrob::introrobcanvas(); //this-&gt; 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>&nbsp;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">&lt;<a rel="nofollow" ymailto="mailto:javiervazper@yahoo.es" target="_blank" href="mailto:javiervazper@yahoo.es">javiervazper@yahoo.es</a>&gt;</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>&nbsp;&nbsp;&nbsp; introrob::introrobcanvas * canvas;<br><br>Posteriormente lo instancio en el constructor de introrobgui como:<br>
<br>&nbsp;&nbsp;&nbsp; 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>&nbsp;&nbsp;&nbsp; canvas-&gt;set_center_scroll_region(false);<br>&nbsp;&nbsp;&nbsp; canvas-&gt;test(-9000,-9000);<br>&nbsp;&nbsp;&nbsp; vscale1-&gt;set_value(canvas-&gt;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&nbsp; de segmentación. Es decir, lo siguiente me falla:<br>
<br>&nbsp;&nbsp;&nbsp; bool introrobgui::on_change_value_vscale1(Gtk::ScrollType scroll, double new_value)<br>&nbsp;&nbsp;&nbsp; {<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; printf("vscale1=%.2f\n",new_value/100);<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; canvas-&gt;set_pixels_per_unit(0.1);<br>&nbsp;&nbsp;&nbsp; }<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>