我有一些返回此错误的C ++代码:
error: assignment of read-only variable ‘parking’
代码:
char const * const parking= "false";
if (phidgets.value(PHIDGET3V_1) > 1000) {
parking = "true";
}
else{
parking = "false";
}
这个错误是什么意思,我该如何解决?
答案 0 :(得分:4)
parking
设置为const
(char const * const parking = "false"
),因此无法修改。
执行parking = "true"
时会引发编译时错误。
如何简单地重现问题:
#include <iostream>
int main(){
const int j = 5;
j = 7;
}
const
表示不变,这意味着您不能更改它:
error: assignment of read-only variable ‘j’
答案 1 :(得分:3)
你宣布停车为常量指针。
char const * const parking= "false";
因此它只会指向字符串文字"false"
,并且可能不会更改。
此声明
char const * const message = "Value: "+ parking +" ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxy";
无效。指针没有添加运算符。
答案 2 :(得分:1)
在您的代码中,您使用const
设置停车变量,这告诉编译器以后不会修改它。然后通过将其设置为true或false来修改停车。
使用std::string
更加惯用c ++。所以我会这样做:
#include<string>
std::string parking = "false";
if (phidgets.value(PHIDGET3V_1) > 1000) {
parking = "true";
//leds_on(LEDS_RED);
} else {
parking = "false";
//leds_off(LEDS_RED);
}
std::string message = "Value: "+ parking +" ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxy";
std::string
重载+
进行连接,以便它按照您的想法在最后一行执行操作。以前你添加了一些指针,这可能不符合你的想法。