【问题标题】:Error: Invalid use of void expression [closed]错误:无效表达式的使用无效[关闭]
【发布时间】:2011-03-15 19:12:41
【问题描述】:
#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 标签,因为这显然不是 C 代码。
  • @Tomalak Geret'kal:感谢您的建议,我会处理好这些......

标签: c++ gtk


【解决方案1】:

似乎 gtk_widget_show() 返回 void。那是您以无效方式使用的 void 表达式。

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

【讨论】:

    【解决方案2】:

    gtk_widget_show() 返回 void。

    你打电话给obj1.set_window(void)

    变化:

    obj1.set_window(gtk_widget_show(w));
    

    gtk_widget_show(w);
    

    【讨论】:

    • 在 C++ 中,(void) 是不必要的,它只是 ()。我相应地编辑了你的帖子。
    • @DeadMG:请不要。 void 是为了说明他在做什么,将 void 传递给期望其他东西的函数。
    • @DeadMG:编辑没有损坏的东西也是不礼貌的,尤其是当您的编辑本身损坏时。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-05-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-09-03
    • 1970-01-01
    相关资源
    最近更新 更多