C ++。用另一个替换阵列

时间:2019-12-08 02:04:27

标签: c++ arrays

在细分曲线中,我想用新的更新数组。但这不起作用。

vec2 Bezier[10] = {};通过在屏幕中单击鼠标来获取初始点。然后,我将创建新的点vec2 umuminoqteler[1000] = {};

数组

,我想用umuminoqteler代替Bezier,因此在下一次迭代中,我可以将umuminoqteler用作初始字母。 我该如何解决? *Bezier=*umuminoqteler不起作用。

    {GLsizei winWidth = 800, winHeight = 600;
    float weights[4] = { -1.0 / 6, 4.0 / 6, 4.0 / 6, 1.0/6 };
    vec2 Bezier[10] = {};
    vec2 yeninoqteler[1000] = {};
    vec2 umuminoqteler[1000] = {};
    glBegin(GL_LINE_LOOP);
    for (int b = 0; b < tezelistsize; b++)
    {
        glVertex2f(umuminoqteler[b].x, umuminoqteler[b].y);
    }

    glEnd();
    *Bezier = *umuminoqteler;
    }


  [1]: https://i.stack.imgur.com/PQirB.png

1 个答案:

答案 0 :(得分:0)

Bezier是10个元素的数组,而umuminoqteler是1000个元素的数组。您无法调整Bezier的大小。 Bezier包含数组第一个元素的地址。 *Bezier是对数组第一个元素的引用。

*Bezier = *umuminoqteler;

类似于

Bezier[0] = umuminoqteler[0];

您可以使用诸如std :: vector之类的动态容器

{
    GLsizei winWidth = 800, winHeight = 600;
    float weights[4] = { -1.0 / 6, 4.0 / 6, 4.0 / 6, 1.0/6 };
    std::vector<vec2> Bezier(10);
    std::vector<vec2> yeninoqteler(1000);
    std::vector<vec2> umuminoqteler(1000);
    glBegin(GL_LINE_LOOP);
    for (int b = 0; b < tezelistsize; b++)
    {
        glVertex2f(umuminoqteler[b].x, umuminoqteler[b].y);
    }

    glEnd();
    // Move 
    Bezier = std::move(umuminoqteler);
    // Or copy
    // Bezier = umuminoqteler;
}