*Tempor abspeichern

Gast #1295314
Lesenswert?

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
Gast #1295332
Lesenswert?

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
#1295917
Lesenswert?

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.
#1296507
Lesenswert?

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
}

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren