我有一个函数 getTotal:
int getTotal( const HitMap& hitMap, bool( *accept)(int chan) )
其中第二个参数是一个布尔函数,指定容器 hitMap 的哪些成员应添加到总数中。
我正在尝试用 lambda 调用它。这有效:
auto boxresult =
getTotal(piHits, [](int pmt)->bool
{ return (pmt/100) == 1;} );
但这不是:
int sector = 100;
auto boxresult =
getTotal(piHits, [sector](int pmt)->bool
{ return (pmt/sector) == 1;} );
我得到错误
cannot convert ‘main(int, char**)::<lambda(int)>’ to ‘bool (*)(int)’
for argument ‘2’ to ‘int getTotal(const HitMap&, bool (*)(int))’
来自我的编译器(GCC 4.6.3)。我试过了[§or]
,[=sector]
但没有任何区别。
我究竟做错了什么?