funktionsn00b
-
yo Hi,
ich hoffe das mir jemand bei meinem Problem helfen kann, falls das Thema schonmal war bitte ich jetzt schon um Entschuldigung.
Momentan initialisiere ich einen Font so:
init(const char *filename); => init("pfad\\font.ttf");Das muss ich sehr sehr oft machen und wollte gerne eine Hilfsfunktion schaffen.
=> init(GetFontName(2));Er soll also in der Funktion GetFontName für den Eintrag 2 den String für den Font zurückgeben.
Bin jedoch noch dummer Anfänger und bekomme es nicht hin
_wills_ aber
Quelltext hier erst geschrieben .. eventuell Syntaxfehler sind nicht Absicht.
init(GetFontName(2)); char GetFontName(int num) { char font[256]; switch (num) { case 1: strcpy(font,"font1");break; case 2: strcpy(font,"font2");break; default:break; } return font; }
oder man übergibt gleich eine char-Variable mit
char font[256]; init(GetFontName(2,&font)); void GetFontName(int num, char *font) { switch (num) { case 1: strcpy(font,"font1");break; case 2: strcpy(font,"font2");break; default:break; } }
Ich hoffe das kam albwegs verständlich rüber.
Kann mir bitte wer die Richtige und Syntaxtechnische korrekte Funktion leifern?
Bei mir kommen immer diverse Umwandlungsfehler oder Typen Unstimmigkeiten.mfg
Thomas
-
wie waere es mit:
char GetFontName(int num) { switch (num) { case 1: return "font1"; case 2: return "font2"; default: return NULL; } }
wobei ich num dann zu einem enum machen wuerde
-
Warum nicht etwa so?
inline const char* GetFontName(int fontnumber) { static const char * const fontnames[] = { "font1", "font2" }; return fontnames[i]; }
(Klappt natürlich nur so einfach, wenn die Font-Nummern dicht liegen, sonst müsste man irgendwie hashen.)
-
Wozu erst den Umweg über enum?
typedef const char* Font; Font fontBla = "fonts/bla.ttf";
-
@Bashar
Wofür ist eigentlich das zweite const nach dem *?PS: So hätte meine Lösung auch ausgesehen.
-
AJ:Optimierungshilfe. KA ob's was nützt.