语言不支持“TEST”

时间:2012-03-09 23:39:27

标签: c# methods c++-cli visual-c#-express-2010

当我调用C ++函数时:

public ref class TEST_CLASS
{
    void TEST(void (*func)())
    {
        (*func)()
    }
};
在C#中

TEST_CLASS t = new TEST_CLASS();
t.TEST(f);

我收到错误:

  

' TEST'语言不支持

导致此错误的原因是什么?我该如何解决?

1 个答案:

答案 0 :(得分:6)

  

当我调用C ++函数时:

那不是C ++代码,你写了一个C ++ / CLI类。请注意 ref class 关键字。您声明该方法采用C函数指针。在C ++ / CLI语言中没问题,它可以让您混合使用本机代码和托管代码构造,但不能对C#或VB.NET这样的语言很好。他们坚持要求您使用函数指针的托管版本,委托

.NET框架中已经有一个委托类型,它与C函数指针MethodInvoker的签名相匹配。但是,让我们假设你想扩展签名并添加你自己的参数和返回类型:

public ref class TEST_CLASS
{
public:
    delegate void TEST_delegate();

    void TEST(TEST_delegate^ func)
    {
        func();
    }
};

挑选那个名字有点受伤。