我正在使用visual studio 2012专业版 我有班级日志:
class log
{
//some code
private:
int check();
};
在另一个类中,我在构造函数中有指向这样的函数的指针:
class fun
{
//some code
public:
fun(int (*wsk)());
}
当我尝试从类日志发送检查功能到构造函数时,我得到错误:
typedef int (*fwsk)();
fwsk gwsk = check;
fwsk gwsk = (void *)check;
如何让它运作?
答案 0 :(得分:0)
成员函数采用不可见的第一个参数this
所以int log::check
是一个类型为
typedef int (log::*function_pointer_type)(void);
不幸的是,这永远不会与
相同typedef int (*fwsk)(void);
你可以在C ++ 11中使用std::bind
来解决这个问题并传入一个通用函数。
示例:
typedef std::function<void(int)> fwsk;
class Log
{
public:
int check(){}
};
class fun
{
//some code
public:
fun(const fwsk& wsk){}
};
int main(int argc, char** argv)
{
Log l;
fun f(std::bind(&Log::check,&l));
}