错误C2106:'=':左操作数必须是l-value c ++

时间:2013-11-11 06:09:26

标签: c++ inheritance polymorphism dynamic-memory-allocation lvalue

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

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;   

2 个答案:

答案 0 :(得分:4)

您打算分配max。试试这个:

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

答案 1 :(得分: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; 

令人不快。