下面这个传递函数对象的小程序有什么问题?
#include <iostream>
#include <functional>
void foo(const std::unary_function<const std::string&, void>& fct) {
const std::string str = "test";
fct(str); // error
}
class MyFct : public std::unary_function<const std::string&, void> {
public:
void operator()(const std::string& str) const {
std::cout << str << std::endl;
}
};
int main(int argc, char** argv){
MyFct f;
foo(f);
return 0;
}
我在第 6 行收到以下错误:
no match for call to
`(const std::unary_function<const std::string&, void>) (const std::string&)'