rotalever
2007-08-01, 18:12:31
cache.cpp: In constructor »fonching::cache::cache(int)«:
cache.cpp:34: Fehler:
»FT_Error (fonching::cache::*)(FTC_FaceIDRec_*, FT_LibraryRec_*, void*, FT_FaceRec_**)«
kann nicht nach
»FT_Error (*)(FTC_FaceIDRec_*, FT_LibraryRec_*, void*, FT_FaceRec_**)«
für Argument »5«
nach
»FT_Error FTC_Manager_New(FT_LibraryRec_*, FT_UInt, FT_UInt, FT_ULong, FT_Error (*)(FTC_FaceIDRec_*, FT_LibraryRec_*, void*, FT_FaceRec_**), void*, FTC_ManagerRec_**)« umgewandelt werden
Dies ist die Ausgabe meines GCC compilers. Die Klasse cache ist ein Singleton in deren Konstruktor ich einige Funktionen aufrufe:
FT_Error (cache::*ptr)( FTC_FaceID, FT_Library, FT_Pointer, FT_Face* ) = NULL;
ptr = &cache::font_requester;
FT_Init_FreeType( &library );
FTC_Manager_New( library, 0, 0, max_memory, ptr, NULL, &cachemanager );
....
Der Fehler kommt hier in der letzten Zeile.
Die Funktion, auf die gepointet wird sieht so aus:
FT_Error cache::font_requester( FTC_FaceID face_id, FT_Library library, FT_Pointer request_data, FT_Face* aface )
{
FT_New_Face( library,"kochi-mincho-subst.ttf", 0, aface );
return 0;
}
Wenn ich das ganze ohne Klassen realisiere, also einfach die Funktion nehme und dann FTC_Manager_New(...) mit Pointer zu einer Funktion (&font_requester) aufrufe, spuckt er keine Fehler aus und es läuft alles.
Packe ich das ganze und die Funktion aber in diese Klasse läuft es nicht mehr. Woher könnte so etwas kommen? Bzw. was habe ich darunter zu verstehen wenn der Compiler im übertragenen Sinne sagt: "'A' kann nicht nach 'A' für Argument 'n' nach 'Bla' umgewandelt werden"?
Face Requester Definition: http://www.freetype.org/freetype2/docs/reference/ft2-cache_subsystem.html#FTC_Face_Requester
cache.cpp:34: Fehler:
»FT_Error (fonching::cache::*)(FTC_FaceIDRec_*, FT_LibraryRec_*, void*, FT_FaceRec_**)«
kann nicht nach
»FT_Error (*)(FTC_FaceIDRec_*, FT_LibraryRec_*, void*, FT_FaceRec_**)«
für Argument »5«
nach
»FT_Error FTC_Manager_New(FT_LibraryRec_*, FT_UInt, FT_UInt, FT_ULong, FT_Error (*)(FTC_FaceIDRec_*, FT_LibraryRec_*, void*, FT_FaceRec_**), void*, FTC_ManagerRec_**)« umgewandelt werden
Dies ist die Ausgabe meines GCC compilers. Die Klasse cache ist ein Singleton in deren Konstruktor ich einige Funktionen aufrufe:
FT_Error (cache::*ptr)( FTC_FaceID, FT_Library, FT_Pointer, FT_Face* ) = NULL;
ptr = &cache::font_requester;
FT_Init_FreeType( &library );
FTC_Manager_New( library, 0, 0, max_memory, ptr, NULL, &cachemanager );
....
Der Fehler kommt hier in der letzten Zeile.
Die Funktion, auf die gepointet wird sieht so aus:
FT_Error cache::font_requester( FTC_FaceID face_id, FT_Library library, FT_Pointer request_data, FT_Face* aface )
{
FT_New_Face( library,"kochi-mincho-subst.ttf", 0, aface );
return 0;
}
Wenn ich das ganze ohne Klassen realisiere, also einfach die Funktion nehme und dann FTC_Manager_New(...) mit Pointer zu einer Funktion (&font_requester) aufrufe, spuckt er keine Fehler aus und es läuft alles.
Packe ich das ganze und die Funktion aber in diese Klasse läuft es nicht mehr. Woher könnte so etwas kommen? Bzw. was habe ich darunter zu verstehen wenn der Compiler im übertragenen Sinne sagt: "'A' kann nicht nach 'A' für Argument 'n' nach 'Bla' umgewandelt werden"?
Face Requester Definition: http://www.freetype.org/freetype2/docs/reference/ft2-cache_subsystem.html#FTC_Face_Requester