错误代码如下:
class Control;
class Form;
class MainForm;
class Control
{
public:
void exe()
{
Form* f;
(f->*_ptr)();
}
void (Form::*_ptr)();
void setPtr( void (Form::*ptr)() )
{ _ptr = ptr; }
};
class Form
{
};
class MainForm : public Form
{
Control c;
void f();
void init()
{
c.setPtr( &MainForm::f );
}
};
int main()
{
return 0;
}
问题是,我想实现在Control中使用类似回调函数的功能。回调函数定义在Form类的子类里,(如果只有1个Form类,就没有问题)请问应该如何实现?
这是一个实现UI的过程,MainForm是一个具体的窗体,而Control是控件。MainForm中添加任意多的Control对象(比如说TextBox、Button)而每一个对象接收到事件信息后,又要触发处理函数(比如所Button1_Press())。这些函数我是定义在MainForm里的,因为处理函数必须可以“看见”当前Form中的其他对象)。
简而言之,具体的Control(如Button)是一个具体的Form的成员,调用的是具体的Form中新增的函数,它自己甚至不知道Form的存在。
红糖糍粑
慕少森
相关分类