如何使用/操作嵌套boost :: bind的返回值

时间:2010-04-16 04:30:48

标签: c++ boost-bind

我有两个功能: 1. A&数据源(); 2. void DataConsumer(A *);

我想要实现的目标: 使用一个语句将它们组合成一个仿函数

我试过了:

1。 boost :: function<空隙()> func(boost :: bind(DataConsumer,& boost :: bind(DataSource)));

当然它不起作用,编译器说它无法将'boost :: _ bi :: bind_t'转换为'A *'

2. boost :: function<空隙()> func(boost :: bind(DataConsumer,boost :: addressof(boost :: bind(DataSource))));

编译器说不能将参数1从'boost :: _ bi :: bind_t'转换为'A&'

问题:如何使用嵌套boost :: bind的返回值?或者如果你想使用boost :: lambda :: bind。

1 个答案:

答案 0 :(得分:1)

伙计们,我刚刚找到答案,如下:

boost::function< void()> func(
        boost::bind( DataConsumer, 
                     boost::bind( boost::addressof< A >, boost::bind< A& >( DataSource ) )
                    )            );

理论应该是:因为我们稍后调用DataSource,所以我们需要一个稍后使用返回值的仿函数。