Вы сбрасываете значение «total» на 0 каждый раз, когда вызываете функцию.
Объявите это 'static'
void myFunction (int i) {
static int total = 0;
total += i;
cout << total;
}
РЕДАКТИРОВАТЬ:
В качестве альтернативы, если вы хотите получить доступ к значению'total' позже вам нужно будет либо использовать глобальную переменную (какого-то рода! Может быть в классе или функторе! не тратьте меня!), либо просто использовать цикл for и передавать его в качестве указателя (т.е. не используйте for_each):
void myFunction (int i, int * p_total) {
//No initialization
*p_total += i;
cout << *p_total;
}
int main() {
int array[] = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 };
int total = 0;
for(int i = 0; i < 10, i++)
myFunction(array[i], &total);
//total is now 55
return 0;
}
Примечание: я программист на C, пытающийся изучать C ++.Вот как я бы это сделал (что очень похоже на C), это может быть не стандартным способом C ++.