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

C++ friend pointer to function

本文关键字:好友 指针 函数 C++      更新时间:2023-10-16

我有一个参考类:

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设置为上课的朋友。

  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);
    }
};

请记住事件关键字。