65,186
社区成员




using namespace std;
function<void (void)> test_fun;
class TestClass
{
public:
void function();
};
void TestClass::function()
{
printf("dddd\n");
}
int main()
{
TestClass a_test;
test_fun = bind(&TestClass::function, a_test);
test_fun();
return 0;
}
function<void ()> m_fun;
void TestClass::reg()
{
m_fun = bind(function,this); // ERROR
}
class TestClass;
typedef void (TestClass::*fun)();
class TestClass
{
fun m_fun;
void function();
void reg();
void call();
};
void TestClass::reg()
{
m_fun = &TestClass::function;
}
void TestClass::function()
{
printf("dddd %d\n");
}
void TestClass::call()
{
m_fun(); // ERROR
}
可以修改为
TestClass dd;
void TestClass::call()
{
(dd.*m_fun)();
}
但是我希望每个m_fun都与本身的对象有关啊,为啥需要绑定到某一个对象上呢?
m_fun = &TestClass::function; // 也不对啊
class TestClass
{
typedef void (*fun)();
fun m_fun;
void function();
void reg();
};
void TestClass::function()
{
}
void TestClass::reg()
{
m_fun = function; // ERROR
}