Question

I'm getting a C2106: '=' : left operand must be l-value error on the line with *shp[count]).area()=max; and I'm not sure what that means. The shape class is a base class for all of the shapes and I'm trying to put them all in an array of type shape and find which one has the largest area

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;   
Was it helpful?

Solution

You meant to assign max. Try this:

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

OTHER TIPS

I know I'm slightly off-topic.

Why don't you write this?

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;
    }
} 

Reading things like:

float max =-99999; 

is unpleasant.

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top