¿Necesita ayuda en la resolución de un error del compilador: Error: la conversión no válido de ‘int’ a ‘GIOCondition’

StackOverflow https://stackoverflow.com/questions/2521699

  •  22-09-2019
  •  | 
  •  

Pregunta

Tengo un archivo CPP simple que usa GIO. He despojado a cabo todo lo posible para mostrar mi error de compilación:

Aquí está el error que consigo:

My.cpp:16: error: invalid conversion from ‘int’ to ‘GIOCondition’
make[2]: *** [My.o] Error 1

Aquí está el archivo completo:

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

he visto otro ejemplo usando gio, y yo estoy haciendo lo mismo que en el plazo de llamar G_IO_IN | G_IO_HUP. Y la documentación http://www.gtk.org/api /2.6/glib/glib-IO-Channels.html , dije que sólo tendrá que incluir, cosa que hice.

¿Puede usted por favor decirme cómo resolver mi error?

Una cosa que puedo pensar es que estoy haciendo esto en un archivo CPP. Pero g_io_add_watch es una función de c?

Gracias por cualquier ayuda que usted. He pasado horas en esto, pero no llegar a ninguna parte.

¿Fue útil?

Solución

Puede Lánzalo

(GIOCondition) G_IO_IN|G_IO_HUP 

o

void createGIOChannel() {
  GIOChannel* gioChannel = g_io_channel_unix_new(0);
  // the following is the line causing the error:
  GIOCondition cond = G_IO_IN|G_IO_HUP;
  g_io_add_watch(gioChannel, cond , read_socket, NULL);
}

Otros consejos

supongo que está decayendo un error que debe utilizar un compilador CPP, que hace estricta verificación de tipos.

En caso que de un compilador de C, que debe ser sobre todo una advertencia.

Puede que encasillado ((GIOCondition) G_IO_IN | G_IO_HUP) o crear una variable de tipo GIOCondition y pasar la misma a la función.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top