C++ g_list_append在我尝试编译时出错

C++ g_list_append在我尝试编译时出错,c++,compilation,glibmm,C++,Compilation,Glibmm,OS=linux(Fuduntu 2013.2) 我试图在我的程序中使用GList,但是当我调用g_list_append时,我得到了这个错误 error: invalid conversion from ‘const void*’ to ‘gpointer {aka void*}’ [-fpermissive] In file included from /usr/include/glib-2.0/glib/ghash.h:35:0, from /usr/includ

OS=linux(Fuduntu 2013.2)

我试图在我的程序中使用GList,但是当我调用g_list_append时,我得到了这个错误

error: invalid conversion from ‘const void*’ to ‘gpointer {aka void*}’ [-fpermissive]
In file included from /usr/include/glib-2.0/glib/ghash.h:35:0,
             from /usr/include/glib-2.0/glib.h:52,
             from /usr/include/glib-2.0/gobject/gbinding.h:30,
             from /usr/include/glib-2.0/glib-object.h:25,
             from /usr/include/glib-2.0/gio/gioenums.h:30,
             from /usr/include/glib-2.0/gio/giotypes.h:30,
             from /usr/include/glib-2.0/gio/gio.h:28,
             from /usr/include/gtk-2.0/gdk/gdkapplaunchcontext.h:30,
             from /usr/include/gtk-2.0/gdk/gdk.h:32,
             from /usr/include/gtk-2.0/gtk/gtk.h:32,
             from main.cpp:4:
/usr/include/glib-2.0/glib/glist.h:61:10: error:   initializing argument 2 of ‘GList* g_list_append(GList*, gpointer)’ [-fpermissive]
下面是包含g_list_append的代码部分

#include<iostream>
#include <stdio.h>
#include<gtk/gtk.h>
#include<glibmm.h>

int main(){

    GList *glist_forleg = NULL;
    glist_forleg = g_list_append(glist_forleg, "A1");

    return 0;
}
<>这不是一个油腔滑调的问题(尽管你应该使用C++类而不是C版本),这是因为引用的字符串是“代码> const < /Cord>”。您尝试使用的函数采用
void*
指针,而不是
const void*
指针,这正是错误试图告诉您的

下面是一个固定的示例:

#include <glib.h>

int main(){

    GList *list = NULL;
    list = g_list_append(list, (gpointer)"A1");

    return 0;
}

但是,这是一个坏主意,因为字符串不一定会在内存中停留,导致指针指向不是您的内存,并导致内存故障。一个更好的想法(如果你记得以后释放它)可能是使用<代码> GyStrdUpU//> >,它会在内存中复制字符串,或者只是使用GLibmm提供的类型,如C++版本的库文档。

哦,我现在变得愚蠢了。我能找到的所有示例都没有使用(gpointer)“A1”tho。@拉斯维格:所有示例可能都不是用-Wall编译的。:)
#include <glib.h>

int main(){

    GList *list = NULL;
    list = g_list_append(list, (gpointer)"A1");

    return 0;
}
cc -Wall -o test test.c $(pkg-config --cflags --libs glib-2.0)