Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/138.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 传递一个visualc++;委托给本机C++;班_C++_Visual C++_Delegates_C++ Cli - Fatal编程技术网

C++ 传递一个visualc++;委托给本机C++;班

C++ 传递一个visualc++;委托给本机C++;班,c++,visual-c++,delegates,c++-cli,C++,Visual C++,Delegates,C++ Cli,我有一个本机类,它需要构造函数中的函数指针。我试过搜索论坛,但找不到我想要的 本机类如下所示: class NativeClass{ NativeClass(std::string(*callback)(std::string args)){ //native code goes here } }; 传递代表的最佳方式是什么?任何帮助都将不胜感激。您需要使用来实现这一点 请注意,这将返回一个使用stdcall调用约定的函数指针。您可以通过在委托声明上使用Unmanage

我有一个本机类,它需要构造函数中的函数指针。我试过搜索论坛,但找不到我想要的

本机类如下所示:

class NativeClass{
    NativeClass(std::string(*callback)(std::string args)){
    //native code goes here
    }
};
传递代表的最佳方式是什么?任何帮助都将不胜感激。

您需要使用来实现这一点


请注意,这将返回一个使用
stdcall
调用约定的函数指针。您可以通过在委托声明上使用
UnmanagedFunctionPointer
属性来指定不同的调用约定。

我已经编写了两个简单的函数,它们可以完美地从托管字符串转换为unmaged std::String。调用未管理的函数没有问题。我正在努力解决的是函数指针位。那么这是否意味着这里的
string
是不是意味着
std::string
?我已经将string编辑并更改为std::string。是的,它是std::string。这不是重点。如果需要,我可以转换。我需要帮助的是委派部分,这不是在标准C++中传递回调的首选方式。最好使用
std::function
来允许传递包含状态的functor(使用functor,您可以轻松地保留
gcroot
,并使用转换后的参数调用它)。但是,如果你听从DavidHeffernan的建议,这应该是可以解决的。@Ben:我是在假设该委托将用于其他.NET语言(例如C#)的情况下进行的。如果它只在同一个C++/CLI程序集中使用,那么它应该可以工作。