C ++错误:分配只读变量

时间:2013-12-15 19:00:07

标签: c++

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

error: assignment of read-only variable ‘parking’

代码:

char const * const parking= "false";

if (phidgets.value(PHIDGET3V_1) > 1000) {
    parking = "true";
} 
else{
    parking = "false";
}

这个错误是什么意思,我该如何解决?

3 个答案:

答案 0 :(得分:4)

parking设置为constchar 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重载+进行连接,以便它按照您的想法在最后一行执行操作。以前你添加了一些指针,这可能不符合你的想法。