C ++朋友指向函数的指针

时间:2014-12-22 17:19:07

标签: c++ windows-8.1 c++-cx

我有一个参考类:

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"中的所有数据(包括私人)? 如果function1pointer_to_function充满了错误。 另外,我无法将{{1}}设为朋友。

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