C++Builder 程序员博客
6 Aug
void call()
{
printf("!!!!");
}
int main()
{
void (*callback)();
callback=call; //在这出错 Member function must be called or its address taken
callback();
system("pause");
}
在VC不会报错输出也正确,但再c++ builder就会出错。为什么会这样?
知道原因了,原来要把call()定义成全局的
感谢上楼
对的呀!
在C++BUILDER下,什么错也没有!
void call()
{
ShowMessage("OK");
}
void __fastcall TForm1::Button1Click(TObject *Sender)
{
void (*callback)();
callback=call;
callback();
}
//—————————————————————————
callback不需全局变量,是在栈中分配的!
该回复于2008-08-03 13:19:11被版主删除
突然想起!
TButton::Chick是怎样实现的;
TForm::OnChick()
{
}
比如Button1->Chick=OnChick;
但点击button1时就会执行OnChick()中的语句
OnChick()即不是全局函数也不是静态函数
TButton::Chick是怎样实现的呢
楼主好象刚学C++BUILDER,未入门呢
该回复于2008-08-04 14:27:51被版主删除
Button1->Chick=OnChick;
用的是 BCB 自己定义的一个类型
有必要看
_closure 关键字用法
闪腿咯
呵呵,明白了。
_closure 定义的指针能赋予任何指针