我有一个函数getTotal:
int getTotal( const HitMap& hitMap, bool( *accept)(int chan) )
Run Code Online (Sandbox Code Playgroud)
其中第二个参数是bool函数,指定应将容器hitMap的哪些成员添加到总数中.
我试着用lambda来调用它.这有效:
auto boxresult =
getTotal(piHits, [](int pmt)->bool
{ return (pmt/100) == 1;} );
Run Code Online (Sandbox Code Playgroud)
但这不是:
int sector = 100;
auto boxresult =
getTotal(piHits, [sector](int pmt)->bool
{ return (pmt/sector) == 1;} );
Run Code Online (Sandbox Code Playgroud)
我收到了错误
cannot convert ‘main(int, char**)::<lambda(int)>’ to ‘bool (*)(int)’
for argument ‘2’ to ‘int getTotal(const HitMap&, bool (*)(int))’
Run Code Online (Sandbox Code Playgroud)
来自我的编译器(GCC 4.6.3).我尝试过[§or],[=sector]但没有任何区别.
我究竟做错了什么?
hmj*_*mjd 16
当lambda具有capture子句时,它不能再被视为函数指针.要更正,请将其std::function<bool(int)>用作参数类型getTotal():
int getTotal( const HitMap& hitMap, std::function<bool(int)> accept)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
688 次 |
| 最近记录: |