Hallo ich hab auf mein My Programm eine Funktion erstellt void datenspeicherntempo::init (const char * x) { memset(m_arr,0,ARRSIZE * sizeof(int)); char *tmp = char *x; while ( *tmp != '\0' ) { setdatenspeicher(*tmp); tmp++; } } lässt sich aber nicht übersetzen
elso mit den paar infos würde ich als compiler auch nicht übersetzen.
Das sieht aber schon sehr übel aus!
> char *tmp = char *x;
char *tmp = x;
im Buch Tips und Triks ist es so drinnen void datenspeicherntempo::init (const char * x) { memset(m_arr,0,ARRSIZE * sizeof(int)); char *tmp = (char*) x; while ( *tmp != '\0' ) { setdatenspeicher(*tmp); tmp++; } } da funktionierts dann auch aber das versteh ich nicht
char *tmp = char *x; char *tmp = (char*) x; wer findet den unterschied ? ;-)
An den Klammern wirds kaum liegen, die sind doch meistens überflüssig, oder?
Lukas schrieb: > ich würde das so machen > > const char *tmp = x; Dann könnte es beim Aufruf von setdatenspeicher() knirschen, zumindest beim Kompilieren. Nämlich dann, wenn dort kein const char* verlangt wird. Ohne deinen Vorschlag und dem Cast (wenn er denn die Klammern spendiert) würde es glatt kompilieren und vielleicht zur Laufzeit schief gehen; vielleicht ist ihm das ja lieber.
mr.chip schrieb: >> Das ist richtig, das lässt sich so nicht übersetzen. > > Tolle Antwort, was? Naja geht so. Man kann es sehr wohl übersetzen; z.B. ins Englische.
ich denk mal er hats deswegen so gelöst weil sich ein const char *x nicht in ein char *temp zuweisen lässt
Klaus Wachtler schrieb: > Lukas schrieb: >> ich würde das so machen >> >> const char *tmp = x; > > Dann könnte es beim Aufruf von setdatenspeicher() knirschen, > zumindest beim Kompilieren. leicht möglich. Aber dann ist die Lösung den cast einfach wegzucasten, keine wirkliche Lösung sondern ein Schuss ins Knie. Ich bezweifle aber, dass es an setdatenspeicher hängen wird. So wie es asussieht, übernimmt die einen char per value, und dann passt das schon.
1 | void datenspeicherntempo::init (const char * x) |
2 | {
|
3 | memset(m_arr,0,ARRSIZE * sizeof(int)); |
4 | |
5 | while ( *x != '\0' ) |
6 | {
|
7 | setdatenspeicher(*x); |
8 | x++; |
9 | }
|
10 | }
|
> An den Klammern wirds kaum liegen, die sind doch meistens überflüssig,
oder?
nö, sind sie nicht :-)
so wie karl heinzes beschrieben hat so ist es auch ich habs auch so gemacht aber er hat es schon richtig beantwortet
Hab mir meinen Beitrag noch mal durchgelesen. Da ist ein Tippfehler drinnen, der zu einem Missverständnis führen könnte. Es muss lauten: Aber dann ist die Lösung den const einfach wegzucasten, keine wirkliche Lösung sondern ein Schuss ins Knie.
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.