读书人

请问一个回调函数的有关问题

发布时间: 2013-04-20 19:43:01 作者: rapoo

请教一个回调函数的问题
向各位高人请教一个问题,想让一个类的成员变量调用本类的函数:


#include <iostream>

class Master;

typedef void (Master::*call_back_t)(void);

class Slave
{
public:
Slave(call_back_t p_callback)
{
mp_callback = p_callback;
}

void print()
{
(this->mp_callback)();
(this->*mp_callback)();
(*mp_callback)();
(mp_callback)();
}

private:
call_back_t mp_callback;
};

class Master
{
public:
Master() : slave_(print)
{
}

void print()
{
std::cout << "Haha" << std::endl;
}

void call()
{
slave_.print();
}

private:
Slave slave_;
};

int main(int argc, char* argv[])
{
Master master;
master.call();
return 0;
}


调试跟踪发现回调函数的地址已经正确设定,但是在调用的时候提示:
error C2064: term does not evaluate to a function

请问这种情况应该如何使用回调函数,多谢解答! callback cpp
[解决办法]
可以参考我写的这个简单示例,地址:http://download.csdn.net/detail/cq20110310/4807468
希望对你有帮助
[解决办法]
函数指针的调用是这样:
(this->mp_callback)();;
(mp_callback)();
你这两个是什么意思?
(this->*mp_callback)();
(*mp_callback)();

[解决办法]
用模板构造这种东西,
一般传入两个东西: 对象+函数

读书人网 >C++

热点推荐