【发布时间】:2012-10-11 18:43:25
【问题描述】:
我在处理函数指针时遇到问题。我创建了一个具有函数指针作为成员的类 Control:
void (*mouseFunction) (Control*, Event*);
成员是受保护的,它有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
【问题讨论】:
-
在您的示例中,至少有三个不同的事物名为
mouseFunction。检查以确保在您的真实代码中,mouseFunction的每次使用都指的是您期望的东西(并考虑重命名一些mouseFunctions,以避免通常由多个相同的东西引起的极端混乱在给定范围内可引用的名称)。