Buenos días, estoy haciendo una aplicación y utilizo la librería GTKmm. He creado una serie de clases:
class pagina: public Gtk::VBox
{
public:
//Variables, constructor y metodos.
public:
virtual int pideConfirmacion(contenedorPaginas *parent);
};
// Interfaz que define dos funciones que debe tener cada contenedor de paginas
class contenedorPaginas: public Gtk::Window
{
public:
virtual void espera() = 0;
virtual void continua() = 0;
};
class contenedor1 : public contenedorPaginas, public Gtk::Dialog
{
// Variables y metodos.
void espera();
void continua();
};
El problema que tengo es que la función virtual pideConfirmacion, hace una llamada a una función que necesita que se le introduzca como parámetro el padre de la pagina que debe ser de tipo Gtk::Window, por eso obligo a que toda las subclases del contenedor de paginas sean Gtk::Window. Pero luego quiero crear un contenedor que específicamente sea de tipo Gtk::Dialog (subclase de Gtk::Window) y se da el
problema del diamante:
contenedorPaginas <- Gtk::Window -> Gtk::Dialog
contenedorPaginas -> contenedor1 <- Gtk::Dialog
El problema se explica de forma bastante clara en el siguiente
enlace.
No puedo resolverlo con herencia virtual porque la definición de Gtk::Dialog es por herencia simple y no virtual.
Sé que es posible resolverlo cambiando el diagrama de clases, pero me gustaría saber bien como se puede utilizar la herencia múltiple.
Gracias y un saludo.