I want to hide details of the lambda function into C++ class' private part.
I tried to separate the lambda function part from for_each() function.
class Sol{
private:
vector<int> vec = vector<int>{1,2,3,4,5};
int target = 10;
auto lambdaFunc = [=](int& v) { v += target; };
public:
void addConst() {
for_each(vec.begin(), vec.end(), lambdaFunc);
}
void printVec() {
for_each(vec.begin(), vec.end(), [](int v){cout << v << endl;});
}
};
int main() {
Sol sol;
sol.addConst();
sol.printVec();
return 0;
}
If I don't separate lambdaFunc from the for_each() function, I got elements of vector printed out. However, by separating lambdaFunc, I got error message:
error: non-static data member declared 'auto'
Changing auto
to static auto
didn't solve.
Aucun commentaire:
Enregistrer un commentaire