C++;错误:分配只读变量 < >我有一些C++代码返回这个错误: error: assignment of read-only variable ‘parking’

C++;错误:分配只读变量 < >我有一些C++代码返回这个错误: error: assignment of read-only variable ‘parking’,c++,C++,守则: char const * const parking= "false"; if (phidgets.value(PHIDGET3V_1) > 1000) { parking = "true"; } else{ parking = "false"; } 此错误是什么意思?如何修复它?停车设置为常量(char const*const parking=“false”),因此无法修改 如果执行parking=“true”操作,则会引发编译时错误 如何简单地重现问题以说

守则:

char const * const parking= "false";

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

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

停车
设置为
常量(
char const*const parking=“false”
),因此无法修改

如果执行
parking=“true”
操作,则会引发编译时错误

如何简单地重现问题以说明:

#include <iostream>
int main(){
  const int j = 5;
  j = 7;
}

parking
设置为
const
char const*const parking=“false”
),因此无法修改

如果执行
parking=“true”
操作,则会引发编译时错误

如何简单地重现问题以说明:

#include <iostream>
int main(){
  const int j = 5;
  j = 7;
}

在代码中,您使用
常量设置了parking变量,这告诉编译器以后不会修改它。然后,您可以稍后通过将其设置为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 parking=“false”;
如果(phidgets.值(PHIDGET3V_1)>1000){
泊车=“真”;
//LED灯亮起(LED灯呈红色);
}否则{
泊车=“假”;
//LED关闭(LED红色);
}
std::string message=“值:”+parking+“abcdefghijklmnopqrstuvxyzabcdefghijklmnopqrstuvxy”;

std::string
重载
+
以进行连接,因此它会执行您在最后一行中认为它会执行的操作。以前,您添加了一些指针,但这可能没有达到您认为的效果。

在您的代码中,您使用
常量设置了parking变量,这告诉编译器以后不会修改它。然后,您可以稍后通过将其设置为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 parking=“false”;
如果(phidgets.值(PHIDGET3V_1)>1000){
泊车=“真”;
//LED灯亮起(LED灯呈红色);
}否则{
泊车=“假”;
//LED关闭(LED红色);
}
std::string message=“值:”+parking+“abcdefghijklmnopqrstuvxyzabcdefghijklmnopqrstuvxy”;

std::string
重载
+
以进行连接,因此它会执行您在最后一行中认为它会执行的操作。以前,您添加了一些指针,但这可能并没有达到您认为的效果。

您将停车声明为常量指针

char const * const parking= "false";
因此,它将只指向字符串literal
“false”
,并且可能不会被更改

还有这个声明

char const * const message = "Value: "+ parking +" ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxy";

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

您已将驻车声明为常量指针

char const * const parking= "false";
因此,它将只指向字符串literal
“false”
,并且可能不会被更改

还有这个声明

char const * const message = "Value: "+ parking +" ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxy";

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

任何代码< >代码> const <代码>限定符都有什么?你应该真正阅读一本C++初学书籍。汇编<代码>消息< /> >代码也行不通。(即使你去掉
const
,它也不会编译),但是你应该真正使用
std::string
,因为它有更直观的界面。如果你要初始化一个C字符串,你应该执行
const char parking[]=“false”从字符串文字到conchchar的转换不知道什么是代码> const 限定符吗?你应该真正阅读一本初学者C++的书。汇编<代码>消息< /代码>也行不通。(即使你去掉
const
,它也不会编译),但是你应该真正使用
std::string
,因为它有更直观的界面。如果你要初始化一个C字符串,你应该执行
const char parking[]=“false”从字符串文字到常量字符*的转换