Boost logo

Boost Users :

From: Ioffe, Robert (robert.ioffe_at_[hidden])
Date: 2003-08-12 11:17:49


The following should not compile:

for_each(v.begin(), v.end(), boost::bind(&myclass::print, _1));

since myclass::print actually takes two arguments and the first one is
not the std::string, but the object of class myclass.

So you should do something like this:

myclass foo;
for_each(v.begin(), v.end(), boost::bind(&myclass::print, foo, _1));

Have fun,
Robert Ioffe

-----Original Message-----
From: dirk_griffioen [mailto:diddekio_at_[hidden]]
Sent: Tuesday, August 12, 2003 3:43 AM
To: Boost-Users_at_[hidden]
Subject: [Boost-Users] boos::bind class member function


I would like to use a for_each with a class member function.

The for_each in myclass::do_print below does not compile. And I
simply cant figure it out.

I'm using vc7.1.

void print2(std::string s)
  cout << s << '\n';

class myclass
  void print(std::string s);
  void do_print();

void myclass::print(std::string s)
  cout << s << '\n';

void myclass::do_print()
  vector<std::string> v;
  for_each(v.begin(), v.end(),
           &myclass::print, _1));

nor will

for_each(v.begin(), v.end(), boost::bind(&myclass::print, _1));
for_each(v.begin(), v.end(), boost::bind(print, _1));


for_each(v.begin(), v.end(), boost::bind(print2, _1));

is ok

It seems natural to do, but I cant get it.


Info: <>
Wiki: <>
Unsubscribe: <mailto:boost-users-unsubscribe_at_[hidden]>

Your use of Yahoo! Groups is subject to

Boost-users list run by williamkempf at, kalb at, bjorn.karlsson at, gregod at, wekempf at