当我调用C++函数时:
public ref class TEST_CLASS
{
void TEST(void (*func)())
{
(*func)()
}
};
在C#中:
TEST_CLASS t = new TEST_CLASS();
t.TEST(f);
我知道错误:
语言不支持
'TEST‘
是什么导致了这个错误?我怎么才能修好它?
发布于 2012-03-09 16:04:42
当我调用一个
函数时:
这不是C++代码,而是编写了一个C++/CLI类。注意ref类关键字。您声明了接受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();
}
};
选这个名字有点疼。
https://stackoverflow.com/questions/9642432
复制