请参阅这个小脑袋里的男女同校片段:
typedef void __fastcall (__closure *GetHTTPCallBack)(String filename);
class Foo {
private:
public:
GetHTTPCallBack Callback;
__fastcall Foo (void) { Callback = NULL; }
__fastcall Foo (GetHTTPCallBack callback) { Callback = callback; }
};
class Bar {
private:
Foo *foo;
public:
void __fastcall CallbackFunction(String fileName) { // Do something }
void __fastcall SetByConstructor(void) { foo = new Foo(CallbackFunction); }
void __fastcall SetByAssignment (void) { foo = new Foo(); foo->Callback = CallbackFunction; }
};
Bar bar;
现在来解决问题。
如果调用bar.SetByAssignment()
它工作正常,则函数指针已设置并从 Foo 正确调用。但在这种情况下,它作为公共变量公开。我希望它是私人的。
我想通过在构造函数中传递函数指针来简化类,并将其隐藏为私有,bar.SetByConstructor()
但在这里我得到编译器错误:
[bcc32 Error] : Member function must be called or its address taken
我认为这__closure
将使这成为可能。有没有可能,或者我只是做错了?