首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >C++错误:只读变量赋值

C++错误:只读变量赋值
EN

Stack Overflow用户
提问于 2013-12-16 03:00:07
回答 3查看 27.7K关注 0票数 2

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

代码语言:javascript
复制
error: assignment of read-only variable ‘parking’

代码:

代码语言:javascript
复制
char const * const parking= "false";

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

这个错误意味着什么?我该如何修复它?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2013-12-16 03:13:40

您将停车声明为常量指针。

代码语言:javascript
复制
char const * const parking= "false";

因此,它将仅指向字符串文字"false",并且不能更改。

还有这句话

代码语言:javascript
复制
char const * const message = "Value: "+ parking +" ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxy";

无效。没有用于指针的加法运算符。

票数 4
EN

Stack Overflow用户

发布于 2013-12-16 03:01:11

parking设置为const (char const * const parking = "false"),因此无法修改。

当您执行parking = "true"时,它会引发编译时错误。

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

代码语言:javascript
复制
#include <iostream>
int main(){
  const int j = 5;
  j = 7;
}

const的意思是常量,这意味着你不能改变它:

代码语言:javascript
复制
error: assignment of read-only variable ‘j’
票数 4
EN

Stack Overflow用户

发布于 2013-12-16 03:10:12

在您的代码中,您使用const设置了停车变量,这是在告诉编译器以后不会修改它。然后,稍后通过将其设置为true或false来修改停车。

不过,使用std::string更符合c++的习惯。所以我会这样做:

代码语言:javascript
复制
  #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重载+以执行连接,因此它执行的操作与您认为的最后一行中的操作相同。之前你添加了一些指针,这可能不会像你想的那样做。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/20598420

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档