J'ai un simple fichier cpp qui utilise GIO. J'ai dépouillé tout pour montrer mon erreur de compilation:Besoin d'aide pour résoudre une erreur de compilation: erreur: conversion invalide de 'int' à 'GIOCondition'
Voici l'erreur que je reçois:
My.cpp:16: error: invalid conversion from ‘int’ to ‘GIOCondition’
make[2]: *** [My.o] Error 1
Voici le dossier complet:
#include <glib.h>
static gboolean
read_socket (GIOChannel *gio, GIOCondition condition, gpointer data)
{
return false;
}
void createGIOChannel() {
GIOChannel* gioChannel = g_io_channel_unix_new(0);
// the following is the line causing the error:
g_io_add_watch(gioChannel, G_IO_IN|G_IO_HUP, read_socket, NULL);
}
Je l'ai vu d'autres exemple en utilisant gio, et je fais la même chose en appelant G_IO_IN | G_IO_HUP. Et la documentation http://www.gtk.org/api/2.6/glib/glib-IO-Channels.html, a déclaré que j'ai seulement besoin d'inclure, ce que j'ai fait.
Pouvez-vous me dire comment résoudre mon erreur? Une chose que je peux penser est que je le fais dans un fichier cpp. Mais g_io_add_watch est une fonction c?
Nous vous remercions de votre aide. J'ai passé des heures là-dessus mais je n'ai rien trouvé.
Merci. Mais pourquoi je dois le jeter si GIOCondition est défini comme 'ENUM' typedef enum { G_IO_IN \t GLIB_SYSDEF_POLLIN, G_IO_OUT \t GLIB_SYSDEF_POLLOUT, G_IO_PRI \t GLIB_SYSDEF_POLLPRI, G_IO_ERR \t GLIB_SYSDEF_POLLERR, G_IO_HUP \t GLIB_SYSDEF_POLLHUP, G_IO_NVAL \t GLIB_SYSDEF_POLLNVAL } GIOCondition; – michael
GIOCondition est le type défini par l'utilisateur, donc vous devriez le transtyper. Pour plus d'informations sur les enums, consultez http://cplus.about.com/od/introductiontoprogramming/p/enumeration.htm – Jay