在 for 循环中使用 class n 次 C++

using a class n times with a for loop c++

我正在努力学习 类,所以在这里我想创建 n 数三角形和矩形类型,输入 a、b、c,也从用户输入然后计算它们。我正在尝试用 for 循环获得 n 个三角形和矩形,但最后我只打印用户输入的最大 S() 和 P() .. 例如,如果我用户说 n=2,那么会有 2 个三角形和 2 个矩形 .. 矩形 a1 = 1, b1 = 2;矩形 a2 = 3, b2 = 4.. 将得到 s() 输出 s = 12 并再次得到 s = 12 而不是 s = 2 和 s = 12 enter image description here 对于有史以来最糟糕的描述,我深表歉意..

    class Rectangle
{
protected:
    int a, b;
    
    virtual double S()
    {
        return a*b;
    }
    
    virtual double P()
    {
        return (2*a) + (2*b);
    }
    
public:
    Rectangle (int aa, int bb) {a = aa; b = bb;}
    
    virtual void Input()
    {
        cout << " enter a: "; cin >> a;
        cout << " enter b: "; cin >> b;
        cout << endl;
    }
    
    virtual void Print()
    {
        cout << " Rectangle S = " << S() << endl;
        cout << " Rectangle P = " << P() << endl;
        cout << endl;
    }
};

    int main()
{
    int n;
    cout << " enter number of triangles and rectangles... "; cin >> n;
    cout << endl;
    Rectangle rectangle(1, 1);
    Triangle triangle(1,1,1);
    
    for (int i=0; i<n; i++)
    {
        rectangle.Input();
    }

        for (int i=0; i<n; i++)
    {
        rectangle.Print();
    }
    

您每次调用 Input() 时都在覆盖同一个变量。相反,创建一个 vector 个矩形。

#include <vector>

class Rectangle {
    // ...
};

int main()
{
    // ...
    
    std::vector<Rectangle> rectangles(n);    
    for (int i=0; i<n; i++)
    {
        rectangles[i].Input();
    }

    for (int i=0; i<n; i++)
    {
        rectangles[i].Print();
    }
}

您需要为 Rectangle 添加一个默认构造函数,以便您可以将其与 vector 一起使用。

例如:

Rectangle() { a = 0; b = 0; }
Rectangle(int aa, int bb) {a = aa; b = bb;}