回调中的函子:编译错误
我有一个使用回调的简单函数,我想使用函子而不是普通函数作为回调。但我收到编译错误。看来我错过了一些东西。
这是代码
#include <iostream>
#include <functional>
void some_func( void (*f)() )
{
f();
}
class Functor
{
public:
void g() { std::cout << "world"; }
void operator() () { std::cout << "hello"; }
};
void g()
{
std::cout << "beautiful";
}
int main(int c, char**v)
{
Functor f;
f();
some_func(g);
some_func(f);//line 26
some_func(std::bind(&Functor::g, f));//line 27
return 0;
}
结果:
g++ 1.cpp std=c++0x
1.cpp: In function 'int main(int, char**)':
1.cpp:26:16: error: cannot convert 'Functor' to 'void (*)()' for argument '1' to 'void some_func(void (*)())'
1.cpp:27:37: error: cannot convert 'std::_Bind<std::_Mem_fn<void (Functor::*)()>(Functor)>' to 'void (*)()' for argument '1' to 'void some_func(void (*)())'
cl
的情况相同
I have a simple function that uses a callback and I want use functor instead of normal function to be used as callback. But I get compilation error. It seems I missing smth.
Here is the code
#include <iostream>
#include <functional>
void some_func( void (*f)() )
{
f();
}
class Functor
{
public:
void g() { std::cout << "world"; }
void operator() () { std::cout << "hello"; }
};
void g()
{
std::cout << "beautiful";
}
int main(int c, char**v)
{
Functor f;
f();
some_func(g);
some_func(f);//line 26
some_func(std::bind(&Functor::g, f));//line 27
return 0;
}
Results:
g++ 1.cpp std=c++0x
1.cpp: In function 'int main(int, char**)':
1.cpp:26:16: error: cannot convert 'Functor' to 'void (*)()' for argument '1' to 'void some_func(void (*)())'
1.cpp:27:37: error: cannot convert 'std::_Bind<std::_Mem_fn<void (Functor::*)()>(Functor)>' to 'void (*)()' for argument '1' to 'void some_func(void (*)())'
Same story for cl
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
some_func 仅接受真正的函数指针作为参数,而不是仿函数类。尝试使用:
some_func
takes only real function pointers as arguments, not functor classes. Try using: