我在处理函数指针时遇到问题。我创建了一个以函数指针作为成员的类 Control:
void (*mouseFunction) (Control*, Event*);
成员是 protected ,它有setter和getter:
void (*getMouseFunction()) (Control*,Event*)
{
return mouseFunction;
}
void setMouseFunction( void (*mouseFunction) (Control*, Event*) )
{
this->mouseFunction=mouseFunction;
}
问题是,即使在设置了指针之后,它也始终为 NULL。
我在头文件中声明了一个函数:
void mouseFunction (Control* control, Event* event)
{
std::cout << "Inside Text Field";
}
如果我尝试分配它:
myControlInstance.setMouseFunction(mouseFunction);
如果我使用 getter 获取指针,它是 NULL;如果我尝试执行该函数,我会得到 EXC_BAD_ACCESS:
error: address doesn't contain a section that points to a section in a object file
最佳答案
following cod 正在运行,因此请确保您的方法是公开的,以便可以从对象以外的其他地方访问。
typedef int Event;
class Control
{
public:
void (*mouseFunction) (Control*, Event*);
void (*getMouseFunction()) (Control*,Event*)
{
return mouseFunction;
}
void setMouseFunction( void (*mouseFunction) (Control*, Event*) )
{
this->mouseFunction=mouseFunction;
}
};
void mouseFunction (Control* control, Event* event)
{
printf ("test");
}
int _tmain(int argc, _TCHAR* argv[])
{
Control c;
c.setMouseFunction(mouseFunction);
Event e = 1;
c.mouseFunction(&c,&e);
return 0;
}
关于c++ - NULL 函数指针,在头文件中声明的函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12846411/