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”不推荐使用代码>从字符串文字到常量字符*的转换