[eside-ghost] Dudilla de C++ (+GTKmm)
Iker Perez de Albeniz - Txupete -
txupete en gmail.com
Jue Oct 25 10:35:25 CEST 2007
ya.. pero el problema es que en mi clases serian asi..
mainWindow contiene a windowBorder...
/////////////////////////ventana principal///////////////////////////////
class mainWindow : public Gtk::Window
{
public:
mainWindow();
virtual ~mainWindow();
virtual void mininize();
protected:
//Signal handlers:
bool windowMState;
virtual bool onMax(GdkEventWindowState* event);
virtual void on_menu_file_new_generic();
virtual void on_menu_file_quit();
//Window Elements
//structure elements
Gtk::VBox m_Box_Top;
//Window Border
windowBorder m_Windowborder;
//Menu
Gtk::MenuBar menu;
};
#endif /*MAINWINDOW_H_*/
////////////////////////// mi clase ///////////////////////////////
#ifndef WINDOWBORDER_H_
#define WINDOWBORDER_H_
#include "stdafx.h"
class windowBorder: public Gtk::EventBox
{
public:
windowBorder();
virtual ~windowBorder();
protected:
Gtk::Image image_Min;
Gtk::EventBox event_Min;
Gtk::Image image_Max;
Gtk::EventBox event_Max;
Gtk::Image image_Exit;
Gtk::EventBox event_Exit;
};
#endif /*WINDOWBORDER_H_
le añado al constructor..??
...
class windowBorder: public Gtk::EventBox
{
public:
windowBorder(Gtk::Window);
virtual ~windowBorder();
...
esto me casca.. ademas en otros lenguajes como c# luego en el contrustor hacia..
windowBorder::windowBorder()
{
parent = window;
}
esto ultimo no se puede hacer en c++..
El 25/10/07, Jon Ander Ortiz <jonbaine en gmail.com> escribió:
> Buenas:
>
> De buenas a primeras, tu clase que hereda de Gtk::Window no es padre de
> MiClase, sino que la contiene.
> Si pones hereda, supongo que estas utilizando herencia, cosa que no es así,
> y puede llevar a equivocaciones.
>
> Creo que tu problema esta en el siguiente punto:
> Cuando haces lo siguiente :
>
> MiClase miclase;
>
> En la clase contenedora estas llamando al constructor sin argumentos de
> MiClase, y te falla miserablemente.
> Hay que tener en cuenta que cuando creas una instancia aunque séa sin hacer
> new, tb se llama al constuctor, por lo que no le estas pasando ningún
> argumento en ese constuctor.
> Por lo que lo ideal:
>
> MiClase * miclase;
>
> //En el constructor de tu ventana:
>
> this->miclase = new MiClase(this);
>
> Y eso, no olvidarse de destruir luego XD.
>
> Un saludete!!
> Jonan
>
> El día 25/10/07, Iker Perez de Albeniz - Txupete - <txupete en gmail.com>
> escribió:
> >
> > Epa!
> >
> > Aunqye estoy con gtkmm es una custion de C++.. acostumbrado a otros
> > lenguajes de programacion.. si desde una clase hija queria llamar a
> > funciones de la clase padre lo que hacia era pasarle la clase padre en
> > el constructor de la hija..
> >
> > Pues bien.. ahora tengo una ventana que es una clase que ereda de una
> > clase de gtk Gtk::Window con funciones propias y luego tengo otra
> > clase que es un elemento creado por mi (MiClase) que es un
> > Gtk::EventBox que dentro tiene un monton de elementos mas
> > (Gtk::Buttons, Gtk::Images..)
> >
> > por tanto dentro del Gtk::Window declaro un nuevo elemento de tipo:
> >
> > MiClase miclase;
> >
> > y lo coloco dentro de la ventana y todo.. muy bien.. la cosa es que
> > ese elemento "miclase" tiene botones que cuando pincho en ellos quiero
> > que llamen a funciones propias de la ventana.. que es la clase padre..
> >
> > he intentado hacer como en otres lenguajes.. pasarle la clase padre en
> > el constructor pero me casca.. igual es porque al heredar de otra
> > clase no puedo tocar el constructor o algo asi..?
> >
> > gracias de antemano!
> > _______________________________________________
> > eside-ghost mailing list
> > eside-ghost en deusto.es
> > https://listas.deusto.es/mailman/listinfo/eside-ghost
> >
>
>
> _______________________________________________
> eside-ghost mailing list
> eside-ghost en deusto.es
> https://listas.deusto.es/mailman/listinfo/eside-ghost
>
Más información sobre la lista de distribución eside-ghost