Witam. Mam problem z przesłaniem liczby z instancji klasy po kliknięciu na obiekt w środku. Chcę, żeby dla każdej instancji danej klasy po kliknięciu można było odczytać zmienną int z tego obiektu. Oto mój kod:

#include <gtk/gtk.h>
#include <string.h>
#include "pieces.h"
#include <cstdio>

class field;

void clickOn(GtkWidget *widget, int *data);

// Klasa pojedynczego pola szachownicy
// Z obiektów tego typu tworzy się szachownicę
class field
{
	public:
		GtkWidget *area;
		GtkWidget *box;
		GtkWidget *background;
		GtkWidget *img;
		piece *figure;
		int x, y;
		field(int _x, int _y)
		{
			x = _x;
			y = _y;
			area = gtk_event_box_new();
			box = gtk_fixed_new();
			gtk_container_add(GTK_CONTAINER(area), GTK_WIDGET(box));
			if((_x+_y)%2)
				background = gtk_image_new_from_file("w.png");
			else
				background = gtk_image_new_from_file("b.png");
			gtk_fixed_put(GTK_FIXED(box), GTK_WIDGET(background), 0, 0);
			img = gtk_image_new();
			gtk_fixed_put(GTK_FIXED(box), GTK_WIDGET(img), 0, 0);
			figure = 0;

//!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
			// Sygnał kliknięcia
			g_signal_connect(G_OBJECT(area), "button_press_event", G_CALLBACK(clickOn), &(this->x)); // Co tu wstawić, żeby przesłać liczbę?
//!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

		}
...........
};

GtkWidget *window;	// Główna okno
field *chessboard[8][8]; // Szachownica

int main(int argc, char *argv[])
{
	// Załadowanie gtk
	gtk_init(&argc, &argv);
	
	// Tworzenie obiektów
	window = gtk_window_new(GTK_WINDOW_TOPLEVEL);
	gtk_window_set_title(GTK_WINDOW(window), "Szachy Damian Dudycz, 43256");

	GtkWidget *mainbox = gtk_vbox_new(false, 0);	// Główny box
	gtk_container_add(GTK_CONTAINER(window), mainbox);

	GtkWidget *maintext = gtk_label_new("Szachy");	// Opis
	gtk_box_pack_start(GTK_BOX(mainbox), GTK_WIDGET(maintext), false, false, 0);

	GtkWidget *chessboardtable = gtk_table_new(8,8,true);	// Szachownica
	gtk_box_pack_start(GTK_BOX(mainbox), GTK_WIDGET(chessboardtable), true, true, 0);

	for(int y = 0; y < 8; y++)
		for(int x = 0; x < 8; x++)
		{
			chessboard[x][y] = new field(x, y);
			gtk_table_attach_defaults(GTK_TABLE(chessboardtable), 
					GTK_WIDGET(chessboard[x][y]->area), x, x+1, y, y+1);
		}
//.....
	for(int x = 0; x < 8; x++)
	{
		chessboard[x][1]->drop(true, 'p');
	}
	chessboard[2][1]->drop();
	chessboard[1][1]->drop();
	chessboard[1][1]->drop(false, 'p');
//......
	// Pokaz obiekty
	gtk_widget_show_all(window);

	// Laczenie sygnalow
	g_signal_connect(G_OBJECT(window), "destroy", G_CALLBACK(gtk_main_quit), 0);

	// Wywolanie
	gtk_main();

	return 0;
}

void clickOn(GtkWidget *widget, int *data)
{
printf("%d", *data); // Tutaj wyrzuca 4 za każdym razem
	chessboard[1][1]->drop(true, 'b');
}