2017-01-26 12 views
0

В приведенном ниже коде, как я могу отображать области прямоугольника и треугольника. В настоящее время я могу напечатать только строки, но область возвращается. Итак, как я могу напечатать возвращаемое значение из функций. Что я должен изменить здесь, в коде, пожалуйста, помогите.отображает значения области для унаследованных классов

class Shape { 
    protected: 
     int width, height; 

    public: 
     Shape(int a = 0, int b = 0) { 
     width = a; 
     height = b; 
     } 

     virtual int area() { 
     cout << "Parent class area :" <<endl; 
     return 0; 
     } 
}; 

class Rectangle: public Shape { 
    public: 
     Rectangle(int a = 0, int b = 0):Shape(a, b) { } 
     int area() { 
     cout << "Rectangle class area :" <<endl; 
     return (width * height); 
     } 
}; 

class Triangle: public Shape{ 
    public: 
     Triangle(int a = 0, int b = 0):Shape(a, b) { } 
     int area() { 
     cout << "Triangle class area :" <<endl; 
     return (width * height/2); 
     } 
}; 

// Main function for the program 
int main() { 
    Shape *shape; 
    Rectangle rec(10,7); 
    Triangle tri(10,5); 

    // store the address of Rectangle 
    shape = &rec; 

    // call rectangle area. 
    shape->area(); 

    // store the address of Triangle 
    shape = &tri; 

    // call triangle area. 
    shape->area(); 

    return 0; 
} 
+0

Вы не распечатывая никаких результатов. Вы просто возвращаете их и не назначаете им ничего, чтобы они потерялись. – Gab

+0

Точно. И, как правило, плохой идеей печатать строку в методе 'area'. Вероятно, вы хотите: 'std :: cout << shape-> area() << std :: endl;'. –

ответ

0

Изменение функции зоны, как показано ниже:

int Rectangle::area() { 
    int ret = width * height; 
    cout << "Rectangle class area : " << ret << endl; 
    return ret; 
} 

int Triangle::area() { 
    int ret = width * height/2; 
    cout << "Triangle class area :" << ret << endl; 
    return ret; 
}