我有一些返回此错误的C++代码:
error: assignment of read-only variable ‘parking’代码:
char const * const parking= "false";
if (phidgets.value(PHIDGET3V_1) > 1000) {
parking = "true";
}
else{
parking = "false";
}这个错误意味着什么?我该如何修复它?
发布于 2013-12-16 03:13:40
您将停车声明为常量指针。
char const * const parking= "false";因此,它将仅指向字符串文字"false",并且不能更改。
还有这句话
char const * const message = "Value: "+ parking +" ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxy";无效。没有用于指针的加法运算符。
发布于 2013-12-16 03:01:11
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’发布于 2013-12-16 03:10:12
在您的代码中,您使用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重载+以执行连接,因此它执行的操作与您认为的最后一行中的操作相同。之前你添加了一些指针,这可能不会像你想的那样做。
https://stackoverflow.com/questions/20598420
复制相似问题