1

我正在尝试使用自定义 .NET ref 类来控制按钮系统。它由添加到父窗体的类内的一个 PictureBox 组成。当它检测到点击时,它需要调用构造函数中指定的函数,该函数是父类内部的方法。

例如:

//in the custom class file
public ref class CButton {
    private: void (*callingproc)(void);
    public:
    CButton(void (*cproc)(void)) {
        callingproc = cproc;
    }
    button_dowork() {
        //do our code to detect if the click was in the right place and call our proc
        callingproc();
    }
};
//in the form.h
void cp(void) {
    //do our form work
}
void Form_CreateCButton() {
    CButton^ t = gcnew CButtom(cp);
}

当我按照说明进行操作时,上面会导致“使用 &ns::form::cp 创建指向成员的指针”的错误,然后是“指向成员的指针对托管类无效”。有任何想法吗?

4

1 回答 1

0

看起来您的类正在存储指向(全局)函数的指针。

也许您的 void cp() 函数在一个类中(“表单”?)。在这种情况下,它实际上是一个成员函数。全局函数不同于成员函数,因此类不能存储指针。

也许您应该考虑委托(特别是如果您使用的是 .Net)。请参阅:http: //msdn.microsoft.com/en-us/library/ms379617 (v=vs.80).aspx

于 2013-03-26T00:03:18.960 回答