首页 > 解决方案 > 如何灵活地使用 c++ 结构数组?

问题描述

想灵活使用结构体数组怎么办?我编写了如下所示的代码,并尝试了三角形和矩形。三角形是成功的,但是当我尝试矩形时,我收到了错误消息。

struct C2D {
    double x, y;
};

class Polygon {
    int point;
    std::vector<C2D> arr;
public:
    Polygon(int point_, C2D arr_[]) : arr(point_) {
        point = point_;
        memcpy(arr.data(), arr_, sizeof(C2D) * point);
    };
    void print() const {
        for (int i = 0; i < point; i++) {
            cout << arr[i].x << " " << arr[i].y << endl;
        }
    };
};

int main() {
    int point;
    C2D c2d[3];

    cout << "point : ";
    cin >> point;
    cout << endl;

    vector<C2D>c2d(point);

    for (int i = 0; i < point; i++) {
        cout << i + 1 << "x : ";
        cin >> c2d[i].x;
        cout << i + 1 << "y : ";
        cin >> c2d[i].y;
        cout << endl;
    }
    cout << endl;

    Polygon p(point, c2d);
    p.print();

    return 0;
}

标签: c++

解决方案


根据您的代码,您声明的变量名 c2d 一个是 C2D 数组类型,另一个是 C2D 的向量,两个变量名的用途与您声明的相同。我的建议是根据点数分配 c2d 变量并传递给多边形。根据我的理解,使用参数数组或向量更改您的多边形构造函数,并将相应的参数传递给构造函数。


推荐阅读