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