我有這樣的代碼片段從C++的書:C++結構難題無法被編譯
#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]);
}
}
利用開發的C++ v5.11,我無法用一個錯誤代碼進行編譯:
[Error] increment of read-only location '*(a[i].S1::s + 3u)'
作爲@Corristo評論的解決方案的作品。
感謝大家的幫助。我將在下次獲得更好的IDE和書籍。謝謝,@ Tomaz-Canabrava。
我認爲這本C++書不是C++ ... – Jiahao
這看起來更像是90年代初期的C,而不是恰當的C++。你應該得到一本更好的C++書。 –
's'是'const char *',那麼'[3]'是'const char',你不能在其上執行'++'。 – songyuanyao