Ho definito una classe così:

codice:
class line 
{
	public: 
		line(char*, char*, int, int, int, int, int);
		void SetTextColor(float,float,float);
		bool Step(cairo_t*);
	private:		
		cairo_matrix_t matrix, backupmatrix;
		int fade_in_max, stay_on_max, fade_out_max;
		float fade_in_step, fade_out_step;
		int current_step;
		int max_transform_y, max_transform_x;
		float transform_x_step, transform_y_step;

		char* text;
		char* author; 
		int win_x, win_y;		

		void Draw(cairo_t*);
		void GetRows(cairo_t*);
		float colormatrix[4];
		float size;
		char font[100];
		int numrows;
		struct row_t
		{
			int x;
			int y;
			char text[100];
		} rows[50];
};
il problema è che quando da una delle due funzioni Step() oppure SetTextColor() tento di accedere a una delle proprietà della classe.. (ad esempio colormatrix, o qualunue altra) mi da segfault... (solo in quel momento, non prima)

questo è il codice che chiama la Step(), ho provato anche chiamando SetTextColor() e fa la stessa cosa...

codice:
#include <string.h>
#include <stdlib.h>
#include <cairo.h>
#include <gtk/gtk.h>
#include "lineclass.h"
#include "clientp.h"

GtkWidget *window;
line *text;


static gboolean on_expose_event(GtkWidget *widget, GdkEventExpose *event, gpointer data)
{
	cairo_t *cr;
	cr = gdk_cairo_create(widget->window);

	int w,h;	
	gtk_window_get_size(GTK_WINDOW(widget), &w, &h);

	cairo_set_source_rgb(cr, 1,1,1); //clear the screen
	cairo_rectangle(cr, 0,0,w,h); 
	cairo_set_line_width(cr, 10);
	cairo_stroke_preserve(cr);
	cairo_fill(cr);

	text->Step(cr);                                                  //****** chiamata incriminata

	cairo_destroy(cr);
	return FALSE;
}

gboolean TimerFunc(void*)
{
	gtk_widget_queue_draw(window);
	return TRUE;
}

int main (int argc, char *argv[])
{
	srand(time(NULL));

	gtk_init(&argc, &argv);
	window = gtk_window_new(GTK_WINDOW_TOPLEVEL);
	gtk_window_set_title(GTK_WINDOW(window), "KP's ClientP");
	gtk_window_set_default_size(GTK_WINDOW(window), 1024, 768); 
	g_signal_connect(window, "expose-event", G_CALLBACK (on_expose_event), NULL);
	g_signal_connect(window, "destroy",G_CALLBACK (gtk_main_quit), NULL);
	gtk_window_set_position(GTK_WINDOW(window), GTK_WIN_POS_CENTER);
	gtk_widget_set_app_paintable(window, TRUE);
	gtk_widget_show_all(window);

	g_timeout_add(80, TimerFunc, NULL); 

	line *text = new line("prova", "prova", 924, 678, 30, 30, 30);  //*************** qui creo l'oggetto
	gtk_main();

	return 0;
}
grazie a tutti