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*> 的替代方法?