C++ 错误:只读变量的赋值

mxm*_*ins 4 c++ constants assignment-operator

我有一些返回此错误的 C++ 代码:

\n\n
error: assignment of read-only variable \xe2\x80\x98parking\xe2\x80\x99\n
Run Code Online (Sandbox Code Playgroud)\n\n

代码:

\n\n
char const * const parking= "false";\n\nif (phidgets.value(PHIDGET3V_1) > 1000) {\n    parking = "true";\n} \nelse{\n    parking = "false";\n}\n
Run Code Online (Sandbox Code Playgroud)\n\n

此错误是什么意思以及如何修复它?

\n

Vla*_*cow 6

您将停车声明为常量指针。

char const * const parking= "false";
Run Code Online (Sandbox Code Playgroud)

所以它只会指向字符串文字"false"并且可能不会被更改。

还有这个声明

char const * const message = "Value: "+ parking +" ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxy";
Run Code Online (Sandbox Code Playgroud)

是无效的。指针没有加法运算符。


Gab*_*iel 5

parking已设置为const( char const * const parking = "false"),因此无法修改。

\n\n

当你parking = "true"这样做时,它会引发编译时错误。

\n\n

如何重现问题非常简单地说明一下:

\n\n
#include <iostream>\nint main(){\n  const int j = 5;\n  j = 7;\n}\n
Run Code Online (Sandbox Code Playgroud)\n\n

const表示恒定,意味着您不允许更改它:

\n\n
error: assignment of read-only variable \xe2\x80\x98j\xe2\x80\x99\n
Run Code Online (Sandbox Code Playgroud)\n