【问题标题】:error: assignment of read-only variable错误:分配只读变量
【发布时间】:2016-02-13 21:55:38
【问题描述】:

我有一个 main.h 文件并包含 static const unsigned int TIME = 13; 我有 main.cpp 文件包括

    int64_t Gettime(int nnow, int64_t never)


{ 
   static const bool TIME = true;

    if(nnow == 6)
    {
        TIME = 9; 
    }

    else if(nnow == 8)
    {
        TIME = 3; 
    }

    else if(nnow == 1)
    {
        TIME = 40;
    }

    else if(nnow > 190)
    {
        TIME = 4000000;
    }

    return TIME + never;
}

在编译时我得到 main.cpp:56:24: error: assignment of read-only variable ‘TIME’ 时间 = 3; ^

我想使用 main.cpp 函数从 main.h 更改 TIME 变量有什么帮助吗?

【问题讨论】:

  • 你有几个变量叫做“TIME”。

标签: c++


【解决方案1】:

TIME 变量被声明为const,因此您只能读取其值而不能修改它,这是编译器在错误中告知您的内容。

如果您必须修改该变量,则必须删除 const 限定符。

【讨论】:

  • 我怎样才能让它可写?
  • 更改其声明,删除const
  • 删除 const 限定符或使用它的副本
  • 我把它改成 static const unsigned int TIME = 13;但我得到同样的错误
  • 您也有错误,您在static const bool TIME = true; 范围内声明了另一个 TIME 变量,您需要更改类型(您希望它是布尔值吗?)并删除 const来自那个的修饰符或者你必须完全限定另一个TIME变量的路径(另一个文件中的那个)
【解决方案2】:

@shafeen 的回答是正确的,但既然你似乎不太了解它,那么一些代码怎么样?

改变这个:

static const bool TIME = true;

收件人:

static bool TIME = true;

我会将此作为对@shafeen 答案的评论,但我没有代表:(

【讨论】:

  • 它编译没有错误,但是当我运行 ./time -time return me 13 TIME 变量没有改变任何帮助?
  • 好吧,您已经将 TIME 声明为布尔值。 Bool 只能用于存储真/假或 0/1。如果要存储整数值,可以将其从 bool 更改为 int。
  • 我是新手对不起,如果我觉得无聊你的意思是静态 int TIME = true; ?
  • 是的,应该可以。但是你不应该将“true”分配给'int',你应该分配一个整数,例如1(代表真)或0(代表假)。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-01-31
  • 1970-01-01
  • 2017-10-24
  • 2018-03-13
  • 2015-01-23
  • 1970-01-01
  • 2016-01-12
相关资源
最近更新 更多