Ich habe diesen Code-Schnipsel aus einem C++ Buch:C++ Struct Puzzle kann nicht kompiliert werden
#include<stdio.h>
#include<stdlib.h>
struct S1
{
const char *s;
int i;
struct S1 *slp;
};
main()
{
static struct S1 a[]= {{"abcdef", 1, a+1},
{"ghijkl", 2, a+2},
{"mnopqr", 3, a} };
struct S1 *p = a;
printf("a[0].s = %s p-> = %s a[2].slp->s = %s \n", a[0].s, p->s, a[2].slp->s);
for(int i=0; i<3; i++)
{
printf("--a[i].i = %d ", --a[i].i);
printf("++a[i].s[3] = %c \n", ++a[i].s[3]);
}
}
Mit Dev C++ v5.11, ich bin nicht in der Lage es mit einem Fehlercode zu kompilieren:
[Error] increment of read-only location '*(a[i].S1::s + 3u)'
Lösung wie von @Corristo kommentiert funktioniert.
Danke für die Hilfe alle. Ich werde bessere IDE und Bücher für das nächste Mal bekommen. Danke, @ Tomaz-Canabrava.
Ich denke, dass dieses C++ Buch überhaupt nicht C++ ist ... – Jiahao
Das sieht mehr wie C aus den frühen 90er Jahren als richtig C++. Sie sollten ein besseres C++ Buch bekommen. –
's' ist' const char * ', dann' s [3] 'ist' const char', du kannst '++' nicht darauf anwenden. – songyuanyao