c++ - 如何使用 boost lambda 在集合中的每个元素上调用方法?

标签 c++ boost stl lambda

我有一个指向观察者实例的 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::bindboost::lambda::bind:

for_each(observers.begin(), observers.end(), boost::bind(&Observer::notify, _1, event));

关于c++ - 如何使用 boost lambda 在集合中的每个元素上调用方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19408552/

相关文章:

c++ - 枚举(类)允许的类型是什么?

Boost MultiIndex 作为 LRU 缓存的 C++ 索引排序问题

C++ 在 boost::ptr_container 中共享元素?

c++ - c++ 中从 long 到 double 的静态转换与使用 double 构造函数有何不同?

C++ Type Traits if_v(自动类型推导+确保类型相同)

c++ - gdb如何附加到多线程进程?

c++ - 如何在 Makefile 中链接 boost 库?

c++ - 以毫秒为单位的本地时间

c++ - 自定义未绑定(bind)数组的迭代器

c++ - 公共(public)函数/类及其相应头文件的列表