Haciendo:
std::list<Gtk::Widget*> parcelas = this->get_children(); (cambiando
VistaParcela* por Gtk::Widget)
Se arregló!

Gracias por las respuestas y consejos!

Sebastian

El día 20/05/07, Damián Viano <[EMAIL PROTECTED]> escribió:

On Sat, May 19, 2007 at 09:01:01PM -0300, Sebastian Durandeu wrote:
> Gracias por las respuestas y perdón por el error incompleto (inexperto
en
> mandar preguntas de este tipo a listas)
>
> La idea es esta:
>
> class VistaCampo: public Gtk::Table;
>
> class VistaParcela: public Gtk::VBox;
>
> VistaParcela* VistaCampo::accederVistaParcela(int fila, int columna){
>
>   std::list<VistaParcela*> parcelas = this->get_children();
>
>  //Buscaria la parcela que quiero
> }
>
> Si dejo solo "this->get_children()" compila lo mas bien.
>
> Y el error completo es este:
>
/usr/lib/gcc/i586-mandriva-linux-gnu/4.0.1/../../../../include/c++/4.0.1/bits/stl_list.h
> instantiated from 'std::list<_Tp, _Alloc>::list(_InputIterator,
> _InputIterator, const typename std::_List_base<_Tp,
> _Alloc>::allocator_type&) [with _InputIterator =
>
Glib::Container_Helpers::ListHandleIterator<Glib::Container_Helpers::TypeTraits<Gtk::Widget*>
> >, _Tp = VistaParcela*, _Alloc = std::allocator<VistaParcela*>]'
>
>
/usr/lib/gcc/i586-mandriva-linux-gnu/4.0.1/../../../../include/c++/4.0.1/bits/stl_list.h
> instantiated from 'void std::list<_Tp,
> _Alloc>::insert(std::_List_iterator<_Tp>, _InputIterator,
_InputIterator)
> [with _InputIterator =
>
Glib::Container_Helpers::ListHandleIterator<Glib::Container_Helpers::TypeTraits<Gtk::Widget*>
> >, _Tp = VistaParcela*, _Alloc = std::allocator<VistaParcela*>]'
>
>
/usr/lib/gcc/i586-mandriva-linux-gnu/4.0.1/../../../../include/c++/4.0.1/bits/stl_list.h
> error: no matching function for call to 'std::list<VistaParcela*,
> std::allocator<VistaParcela*> >::_M_insert(std::_List
> _iterator<VistaParcela*>&, Gtk::Widget*)'
>
> Este ultimo sería el error, pero la vdd que no lo entiendo.

Es muy claro una vez descompuesto, o como dijo Jack, vamos por partes:


>/usr/lib/gcc/i586-mandriva-linux-gnu/4.0.1/../../../../include/c++/4.0.1/bits/stl_list.h
>error: no matching function for call to
Esto suena claro, no encontró una función que estás usando, veamos qué
función:
>'std::list<VistaParcela*, std::allocator<VistaParcela*> >
Hasta ahí tenemos: una lista de tipos VistaParcela*, ok, sigamos:
>::_M_insert(
Mm... ok, algun tipo de insert dentro de esa lista, moving on...:
>std::_List _iterator<VistaParcela*>&, Gtk::Widget*)'
Y acá está la papa al insert le estás pasando un iterator de
VistaParcela*, lógico, dado que es una lista de VistaParcela*, peeero
como elemento un Gtk::Widget*.

O sea, visto así suena casi obvio que aclare que "En una lista de
VistaParcela* no puede insertarse (o sea, no se encontró el método para
hacerlo) un Gtk::Widget*" ¿no?

Espero que te sirva, la idea del análisis detallado es para que veas
cómo pienso yo estas cosas. La verdad que los errores de gcc con
templates son bastante complejos de leer a veces y esta forma me ha
resultado en casos donde el error una vez descompuesto tenía varias
pantallas de longitud (con varios niveles de templates anidados).

        Damián Viano.

P.D.:
Yo  - Porque rompe el hilo lógico de la conversación
Vos - ¿Porqué?
Yo  - Intentá no hacer top-posting (o sea responder arriba de otra
pregunta dejando todo lo anterior abajo)

_______________________________________________
Lista de correo Programacion.
[email protected]
http://listas.fi.uba.ar/mailman/listinfo/programacion


_______________________________________________
Lista de correo Programacion.
[email protected]
http://listas.fi.uba.ar/mailman/listinfo/programacion

Responder a