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被版主删除

引用 6 楼 BCBPLC 的回复:
楼主好象刚学C++BUILDER,未入门呢

是啊,刚学不久

Button1->Chick=OnChick;
用的是 BCB 自己定义的一个类型
有必要看
_closure 关键字用法
闪腿咯

呵呵,明白了。
_closure 定义的指针能赋予任何指针