[在编译下面的代码时,我在第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
,它允许更改指针本身,但不能更改所指向的内容吗?