problema de compilacion con programa gtk+

Moderadores: Kravenbcn, largeroliker, fidelcastro, cerealkiller, pspCaracas, m0skit0, LnD, ka69, zacky06

Responder
Avatar de Usuario
ZackM77
Habitual
Habitual
Mensajes: 174
Registrado: 24 Ene 2010, 11:20
Ubicación: My dreams

problema de compilacion con programa gtk+

Mensaje por ZackM77 »

hola que tal miren mi problema es al que cuando compilo este programa con c normal todo ok pero al tratar de compilar este hola mundo de gtk+ con el c++ entonces da ese problema.

Código: Seleccionar todo

#include <stdlib.h>
#include <gtk/gtk.h>
using namespace std;

int main (int argc, char *argv[])
{
  gtk_init(&argc,&argv);
  GtkWidget  *ventana,*letrero;
  ventana= gtk_window_new(GTK_WINDOW_TOPLEVEL);
  letrero=gtk_label_new("Hola mundo");
  gtk_container_add(G_OBJECT(ventana),letrero);
  gtk_widget_show_all(ventana);
  gtk_main();
  return 0;
}


me da este error:

Código: Seleccionar todo

main.cpp|11|error: cannot convert ‘GObject* {aka _GObject*}’ to ‘GtkContainer* {aka _GtkContainer*}’ for argument ‘1’ to ‘void gtk_container_add(GtkContainer*, GtkWidget*)’|

como puedo solucionarlo para poder compilarlo en c++ y asi portarlo a objetos (por si sirve de algo uso el ide codeblocks bajo linux)
Imagen

Avatar de Usuario
m0skit0
Administrador
Administrador
Mensajes: 5585
Registrado: 03 Sep 2009, 09:35
Ubicación: 0xdeadbeef

Re: problema de compilacion con programa gtk+

Mensaje por m0skit0 »

No sé qué quieres decir con "portarlo a objetos"... Tu problema es de compilación (te da igual el IDE y el SO). Estás usando gtk_container_add() de forma incorrecta. El prototipo es

Código: Seleccionar todo

void gtk_container_add(GtkContainer *container, GtkWidget *widget)

Y tu estás haciendo

Código: Seleccionar todo

gtk_container_add(G_OBJECT(ventana),letrero);

G_OBJECT convierte a GObject*, lo cual es inválido como argumento. Prueba con

Código: Seleccionar todo

gtk_container_add(ventana, letrero);
Imagen

Avatar de Usuario
ZackM77
Habitual
Habitual
Mensajes: 174
Registrado: 24 Ene 2010, 11:20
Ubicación: My dreams

Re: problema de compilacion con programa gtk+

Mensaje por ZackM77 »

ya vi cual era el error, no se por que en c normal me compilaba asi, pero en c++ tenia que afuerzas hacer un casteo, lo que pasa es que al crear el objeto ventana, esta era de tipo GtkWidget entonces para agregarlas a la funcion gtk_container_add tenia que hacer un casteo en el objeto ventana para convertirlo en un objeto tipo gtk container, porque como se ve el primer elemento que se mete en la funcion gtk_container_add tiene que ser de tipo contenedor, y el segundo ya es un widget.


Código: Seleccionar todo

#include <stdlib.h>
#include <gtk/gtk.h>
using namespace std;

int main (int argc, char *argv[])
{
  gtk_init(&argc,&argv);
  GtkWidget  *ventana,*letrero;
  ventana= gtk_window_new(GTK_WINDOW_TOPLEVEL);
  letrero=gtk_label_new("Hola mundo");
  gtk_container_add(GTK_CONTAINER(ventana),letrero);
  gtk_widget_show_all(ventana);
  gtk_main();
  return 0;
}

y con esto ya esta solucionado (lol) grax mosquito
Imagen

Responder