在C++中使用指向函数的指针有问题。下面是我的例子:
#include <iostream>
using namespace std;
class bar
{
public:
void (*funcP)();
};
class foo
{
public:
bar myBar;
void hello(){cout << "hello" << endl;};
};
void byebye()
{
cout << "bye" << endl;
}
int main()
{
foo testFoo;
testFoo.myBar.funcP = &byebye; //OK
testFoo.myBar.funcP = &testFoo.hello; //ERROR
return 0;
}
编译器在testFoo.myBar.funcP = &testFoo.hello;
返回错误
ISO C++禁止使用绑定成员函数的地址来形成指向成员函数的指针。说'&foo::hello'
无法在赋值中将“void(foo::)()”转换为“”void()()“”
所以我试着这样做:
class bar
{
public:
void (*foo::funcP)();
};
但是现在编译器又增加了一个:
'foo‘尚未声明为
有没有办法让它工作?
提前感谢您的建议
https://stackoverflow.com/questions/2374847
复制相似问题