Re: How to use a class's member function in STL's algorithm?
On Jul 12, 1:59 pm, "want.to.be.professer" <guolihui...@gmail.com>
wrote:
On Jul 12, 4:54 pm, "want.to.be.professer" <guolihui...@gmail.com>
wrote:
We know that alomost every algorithm function, such as for_each,
find_if, use funcional as well as function pointer. But when I want
to use another class's member function, how could I do?
See example:
class TestPrint
{
public:
TestPrint( int i ) { start_num = i; }
void print( int i )
{
cout << endl<< "| " << i=
+ start_num <<
" |" << endl;
}
private:
int start_num;
};
int main()
{
TestPrint* pTest = new TestPrint( 8 );
int a[10] = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9};
for_each( a, a + 9, /*** Use the pTest's "print" ***/ )=
;
delete pTest;
return 0;
}
/*** Use the pTest's "print" ***/ is where I want to write code .
sorry
for_each( a, a + 9, /*** Use the pTest's "print" ***/ )=
;
should be
for_each( a, a + 10, /*** Use the pTest's "print" ***/ =
);
You can use binders like boost::bind, or standard binders like bind1st
(here) / bind2nd along with std::mem_fun_ref.
for_each( a, a + 9, bind(&TestPrint::print, pTest, _1));
Make the print member a const member function, else std:: binders
won't probably work.