2015-09-04 63 views
0

一个简单的函数分配值数组元素的函数

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

如预期不起作用内 - 阵列b保持不变。

回答

4

因为你通过并且只是修改复制的数组,这与外部b无关。您可以通过引用传递:

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

你应该参考给const通过a为好,以避免不必要的副本。