Error: Invalid use of void expression [closed]

2019-10-20 05:15发布

#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;
}

标签: c++ gtk
2条回答
手持菜刀,她持情操
2楼-- · 2019-10-20 05:23

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);
查看更多
该账号已被封号
3楼-- · 2019-10-20 05:35

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

查看更多
登录 后发表回答