-3
#include <gtk/gtk.h>
#include <string>

using namespace std;

class WIN
{    
    protected:
    GtkWidget *window;

    public:

    GtkWidget* get_window(){ return window; }
    void set_window(GtkWidget* w){ window = w; }
    void set_title(string s) 
    {
        gtk_window_set_title (GTK_WINDOW(window), s.c_str());
    }

};

int main (int argc, char *argv[])
{
    /* Initialize GTK+ and all of its supporting libraries. */
    gtk_init (&argc, &argv);
    WIN obj1;
    obj1.set_window(gtk_window_new (GTK_WINDOW_TOPLEVEL));
    obj1.set_title("Hello World");
    GtkWidget *w = obj1.get_window();
    obj1.set_window(gtk_widget_show(w));

    /* Hand control over to the main loop. */
    gtk_main();
    return 0;
}
Puppy
  • 138,897
  • 33
  • 232
  • 446
Umair Khan
  • 175
  • 1
  • 2
  • 9

2 Answers2

2

Seems like gtk_widget_show() returns void. That's the void expression you are using in an invalid way.

http://library.gnome.org/devel/gtk/2.99/GtkWidget.html

Bo Persson
  • 86,087
  • 31
  • 138
  • 198
1

gtk_widget_show() returns void.

You're calling obj1.set_window(void)

Change:

obj1.set_window(gtk_widget_show(w));

To

gtk_widget_show(w);
Erik
  • 80,488
  • 12
  • 185
  • 183