我有一个参考类:
public ref class class1 sealed
{
bool (*pointer_to_function)(args);
}
bool function1(args);
//inside of class1 functions
pointer_to_function = &function1;
如何向function1
class1
传递class1
来访问args == "class1^ args"
中的所有数据(包括私人)?
如果function1
,pointer_to_function
充满了错误。
另外,我无法将{{1}}设为朋友。
答案 0 :(得分:1)
bool (*pointer_to_function)(args);
这是一个C函数指针声明。请记住,您的" class1"可以被不知道关于C的bean的代码使用。像Javascript或VB.NET。所以这是不可能的,编译器抱怨,你必须使用委托。委托是C ++ / CX提供的语法糖,用于声明可以跨多种语言工作的函数指针。它们比C函数指针更强大,它们也可以调用类的实例方法。
一个简单的例子:
namespace Foo {
public delegate void mycallback(int arg);
public ref class class1 sealed {
public:
property mycallback^ pointer_to_function;
};
}
如果你想用C ++代码初始化它,那你就写下这样的东西:
ref class Bar {
private:
Foo::class1^ obj;
void callbackFunction(int arg) { }
public:
Bar() : obj(ref new Foo::class1) {
obj->pointer_to_function = ref new Foo::mycallback(this, &Bar::callbackFunction);
}
};
请记住event keyword。