一个简单的功能

auto f = [] (const array <GLfloat, 4> a, array <GLfloat, 4> b) {b [2] = a [2] + 5;};


不能按预期工作-数组b保持不变。

最佳答案

因为您要按值传递并且只修改复制的数组,所以与外部b无关。您必须通过引用:

auto f = [](const array<GLfloat, 4>& a, array<GLfloat, 4>& b) {b[2] = a[2] + 5;};
                                                       ^^^^


您还应该通过引用引用传递a以避免不必要的复制。

关于c++ - 将值分配给函数内的数组元素,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/32407972/

10-11 20:23