const_cast ((char * const)not lvalue?

问题描述 投票:0回答:1

[在编译下面的代码时,我在第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给出的精确错误是:“错误:左值必须作为赋值的左操作数”。

c++ c++17 lvalue const-cast
1个回答
0
投票

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

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

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

© www.soinside.com 2019 - 2024. All rights reserved.