[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