for_each question

how do I get for_each to call the member function? It works fine with a non member. I must be missing something basic here:

#include <iostream>
#include <vector>
#include <algorithm>
#include <conio.h>

using namespace std;
class TestClass
auto Func(int);

auto TestClass::Func(int n)
cout << n << " from member. \n";

auto Func(int n)
cout << n << " from non member. \n";
int main()
vector<int> v;

TestClass tc;

for_each(v.begin(),v.end(),tc.Func); // -- doesn't work
for_each(v.begin(),v.end(),Func); // -- works

cout << "Press any...";
return 0;

Last edited on
using lambda: for_each(v.begin(),v.end(),[&](int n){tc.Func(n);});
using std::bind:
 //#include <functional>
for_each(v.begin(),v.end(),std::bind(&TestClass::Func, &tc, std::placeholders::_1));
Last edited on
i dont think he is going to understand that. he is a beginner.
Consider using a range-based loop instead of std::for_each

After the advent of C++11, the algorithm std::for_each has essentially become obsolete; it remains because legacy code must still be supported.

Short and sweet: for( int i : v ) tc.func(i) ;
i dont think he is going to understand that. he is a beginner.

I saw OP using the automatic return type deduction feature (C++14) and so thought maybe …? Anyways, by now s/he sure got the answer
Topic archived. No new replies allowed.