const_cast((char * const)not lvalue?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了const_cast((char * const)not lvalue?相关的知识,希望对你有一定的参考价值。

[在编译下面的代码时,我在第3行收到关于const_cast不是左值的错误。这仅仅是一个问题,因为我使用了gcc 7.x(即使它应该完全符合C ++ 17)?还是按照标准,这确实是无效的代码吗?

下面的代码是触发错误的最小示例。尝试使用gcc 7.1、7.4和https://www.onlinegdb.com/online_c++_compiler,并得到相同的错误。

char* const a = "xyz";
char* b;
const_cast<char*>(a) = b;  // not lvalue error

gcc给出的精确错误是:“错误:左值必须作为赋值的左操作数”。

答案

类型char * const a定义了一个指针变量a,该变量无法更改,但指向可以更改的字符。这不是使指针恒定的常用方法。

错误告诉您不能更新a的值-它不是左值,在这种情况下,我不认为const_cast可以解决这个问题。

您可能是指const char *a,它允许更改指针本身,但不能更改所指向的内容吗?

以上是关于const_cast((char * const)not lvalue?的主要内容,如果未能解决你的问题,请参考以下文章

const_cast((char * const)not lvalue?

函数 findx() 中是不是有 const_cast<char*> 的替代方法?

您可以从`volatile const char *`构造一个字符串吗? (不使用`const_cast`)

char *与const char **函数参数传参问题

const_cast 用法

const_cast 用法