赋值错误中的非左值
Non lvalue in assignment error
当我使用 names
打印字符串时,我遇到了此错误,但在使用tempNames
时没有错误。
char* names[] = { "JIM",
"RAM",
"SAM",
0 };
int main(int argc, char *argv[])
{
char** tempNames = names ;
while(*names != 0)
std::cout << *names++ << std::endl ;
return 0;
}
为什么*names
变成了右值,而*tempNames
却变成了右值。
正如比尔·林奇(Bill Lynch)在评论中解释的那样,您正在增加类型char* []
这是不允许的。(如果您将其视为类型 int []
,则更容易。分配给char**
时,可以递增它。
或者更好的基于迭代器的C++解决方案C++11:
char* names[] = { "JIM",
"RAM",
"SAM" };
int main(int argc, char *argv[])
{
char** tempNames = names ;
for(auto i = std::begin(names); i != std::end(names); ++i){
std::cout << *i << std::endl;
}
return 0;
}
相关文章:
- 错误:在为指针赋值时,void值没有被忽略
- 使用 mat.at<uchar>(i,j) 的 opencv C++中的矩阵赋值错误
- 奇怪的 G++ 错误,带有关于左值和赋值的简单代码
- 重载赋值运算符函数和复制构造函数中的错误
- 当我尝试构建此程序时,出现此错误:需要左键作为赋值的左操作数
- 错误:无法在赋值中将"双 ()(双)抛出 ()"转换为"双倍"
- 错误消息:使用复制构造函数和重载赋值运算符
- 为什么在取消引用的指向接口的指针上使用赋值运算符不是编译器错误
- 如何重载 const 对象的 [],以便值赋值不会导致编译错误
- C++的新增功能:创建 2D 数组并具有正确的赋值运算符:分割错误
- C++:构造函数中的向量赋值错误
- 使用赋值运算符复制两个类中的数组时出现编译器错误
- 可以错误地使用赋值运算符而不是比较运算符的地方,= Vs ==
- 唯一指针中的赋值运算符错误
- 不断增加的指针数组 错误:赋值中的类型不兼容
- C++赋值构造函数瓦尔格林德错误
- { } 构造函数实现中的赋值运算符 => 错误
- 使用宏进行赋值和错误检查
- 两个向量赋值错误
- 错误:在 GEANY 中将"int"赋值为"char [1]"时类型不兼容