2015-12-03 2 views
0

Я пытаюсь передать-структуру в функцию обратного вызова, которая выполняется, когда выпадающий меняется, вот мой код:Переходя на структуру в функцию обратного вызова

static struct parameters changed_set_parameters; 

changed_set_parameters.set_combo = set_combo; 

gtk_signal_connect (GTK_OBJECT (set_combo), "changed",GTK_SIGNAL_FUNC(set_changed), &changed_set_parameters); 

Вот функция:

void set_changed(GtkDialog *dialog, gint response_id, gpointer callback_params) { 
    g_print ("%s\n",gtk_combo_box_text_get_active_text ((GtkComboBoxText *)((struct parameters *) callback_params)->set_combo)); 
} 

Вот что я получаю:

gtk_signal_handlers.h:7:98: error: dereferencing pointer to incomplete type 
     g_print ("%s\n",gtk_combo_box_text_get_active_text ((GtkComboBoxText *)((struct parameters *) callback_params)->set_combo)); 

у меня почти такой же код в другом приложении, и он работает просто отлично

+2

Параметры структуры, где это определение? Правильность его области? –

+0

Почему сообщение об ошибке пропускает cast '(GtkComboBoxText *)', но не cast '(struct parameters *)'? –

+1

погода, это был старый выход, я скопировал последнее сообщение kkk ugh, это была проблема с областью, не могу поверить, что я все еще делаю эти ошибки :( спасибо –

ответ

0

error: dereferencing pointer to incomplete type

разыменования оператора здесь ->, разыменованный указатель ((struct parameters *) callback_params), его тип struct parameters *, set_combo является членом struct parameters, таким образом, определение struct parameters должно быть вне объема здесь.

Смежные вопросы