我有一个指向观察者实例的 shared_ptr
列表。我想使用 boost lambdas 在每个观察者上调用通知方法,如下所示:
list<ObserverSharedPtr> observers;
...
for_each(observers.begin(), observers.end(), _1->notify(event));
但是,上面的代码会产生以下编译错误:
error: base operand of `->' has non-pointer type `boost::arg<1>'
我的问题是,如何利用 boost lambda 对 STL 集合中的每个元素调用方法?
最佳答案
使用 boost::bind
或 boost::lambda::bind
:
for_each(observers.begin(), observers.end(), boost::bind(&Observer::notify, _1, event));
关于c++ - 如何使用 boost lambda 在集合中的每个元素上调用方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19408552/