1

関数 g_slist_append(list, &structure) を使用して、単一リンク リストに構造を追加しようとしています。これは機能しているように見えますが (ポインターを追加しています)、リンクされたリストを読み取るときに構造内の要素を表示する方法が見つからないようです。

私の構造は次のようになります。

 struct customstruct
 {
   int var1;
   int var2;
   char *string_1;
 }

次に、リストを作成します。GSList *list = NULL;

次に、次のように構造体のインスタンスを 1 つ追加します。

 struct customstruct list_entry;
 list_entry.var1 = 1;
 list_entry.var2 = 2;
 list_entry.string_1 = "String";

 list = g_slist_append(list, &entry);

 printf("Entry var1 = %d\n", list->data->var1);

var1その最後の行は、見つからないため失敗します(構造体または共用体ではないメンバーの要求)。

正しい型にキャストする必要があると思いますが、方法がわかりません。誰?

4

1 に答える 1

4

構造体のdataメンバーはポインター、つまり、何でも指すことができるが、他のタイプ情報を持たないポインターだと思います。GSListvoid

これは、型キャストを使用する必要があることを意味します。

((struct customstruct *) list->data)->var1
于 2013-01-28T11:35:37.687 に答える