错误 C2106:'=':左操作数必须是左值 c++

Posted

技术标签:

【中文标题】错误 C2106:\'=\':左操作数必须是左值 c++【英文标题】:error C2106: '=' : left operand must be l-value c++错误 C2106:'=':左操作数必须是左值 c++ 【发布时间】:2013-11-11 06:09:25 【问题描述】:

我收到C2106: '=' : left operand must be l-value 错误 *shp[count]).area()=max; 我不确定这意味着什么。形状类是所有形状的基类,我试图将它们全部放在形状类型的数组中,并找出哪个面积最大

int largestArea()

float max =-99999;
int index = 0;
shape *shp[6];
shp[0 ]= new trapezoid (4,6,3);
shp[1 ]= new triangle  (4,2);
shp[2 ]= new parallelogram (3,8);
shp[3 ]= new trapezoid (2,6,3);
shp[4 ]= new triangle  (5,2);
shp[5 ]= new parallelogram (2,7);

for(int count=0;count<6;count++)

    if((*shp[count]).area()>=max)
    
        (*shp[count]).area()=max;
        index = count;
    


return index;   

【问题讨论】:

area() 返回什么? 该错误表明您正在尝试分配给不可分配的东西。 error C2106: '=' : left operand must be l-value的可能重复 那么,您对(*shp[count]).area()=max 分配的意图是什么?你想通过这个做什么? @Adam area() 在浮点数中返回相应区域的形状 【参考方案1】:

您的意思是分配max。试试这个:

max = (*shp[count]).area();

【讨论】:

哈哈哇我是个白痴这是我第二次这样做我认为这可能是问题.....非常感谢这是问题【参考方案2】:

我知道我有点跑题了。

你为什么不写这个?

size_t index = 0; 
float max = (*shp[0]).area(); 

for(int count=1;count<6;count++)

    if((*shp[count]).area()>=max)
    
        max = (*shp[count]).area();
        index = count;
    
 

阅读内容:

float max =-99999; 

不愉快。

【讨论】:

感谢提示,下次会考虑

以上是关于错误 C2106:'=':左操作数必须是左值 c++的主要内容,如果未能解决你的问题,请参考以下文章

error C2106: “=”: 左操作数必须为左值

在 r 值概念上需要一些帮助

C ++返回指针值不可更改

C++(E0158 表达式必须是左值或函数指示符)和(错误 C2102 '&' 需要左值)

0

错误:需要左值作为赋值的左操作数,我收到此错误啥是左值和右值以及如何删除此错误