运行此代码时出现此错误。请查看我的代码并帮助我。
#include "stdafx.h"
#include <iostream>
class A
{
public:
void PrintTwoNumbers(int (*numberSource)(void))
{
int val1= numberSource();
}
int overNineThousand(void)
{
return (rand()%1000) + 9001;
}
};
int _tmain(int argc, _TCHAR* argv[])
{
int (A::*fptr) (void) = &A::overNineThousand;
int (A::*fptr1) (void);
fptr1 = &A::overNineThousand;
A a;
a.PrintTwoNumbers(&fptr); //-> how to pass here
getchar();
return 0;
}
我厌倦了在线搜索,没有人为此提供完美的解决方案。任何人都可以编辑这段代码作为工作代码并帮助我吗?
答案 0 :(得分:0)
期望的参数是(非成员)函数指针。您改为将(指向a)指针传递给成员函数。 (指针)指向成员函数的指针不能转换为指向(非成员)函数的指针。
最简单的解决方案可能是将函数参数修复为正确类型,传递隐式对象参数,并在调用时不要使用成员函数指针的地址。
void PrintTwoNumbers(int (A::*numberSource) ())
{
int val1= (this->*numberSource)();
}
a.PrintTwoNumbers(fptr);