2017-01-26 7 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; 
} 
関連する問題