0

GIO を使用する単純な cpp ファイルがあります。コンパイルエラーを表示するためにすべてを取り除きました:

これが私が得るエラーです:

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

完全なファイルは次のとおりです。

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

gio を使用した他の例を見たことがありますが、G_IO_IN|G_IO_HUP を呼び出すという点では同じことをしています。また、ドキュメントhttp://www.gtk.org/api/2.6/glib/glib-IO-Channels.htmlには、 を含めるだけでよいと書かれており、それを実行しました。

エラーを解決する方法を教えてください。

私が考えることができることの1つは、これをcppファイルで行っていることです。しかし、g_io_add_watch は ac 関数ですか?

助けてくれてありがとう。私はこれに何時間も費やしましたが、どこにも行きませんでした。

4

2 に答える 2

1

あなたはそれをキャストすることができます

(GIOCondition) G_IO_IN|G_IO_HUP 

また

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);
}
于 2010-03-26T07:41:53.963 に答える
0

厳密な型チェックを行う CPP コンパイラを使用している必要があるため、エラーにフラグを立てていると思います。

C コンパイラの場合、これは主に警告になります。

型キャスト ((GIOCondition) G_IO_IN|G_IO_HUP) するか、GIOCondition 型の変数を作成して関数に渡すことができます。

于 2010-03-26T08:25:07.300 に答える