Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sqlite/3.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++ cli C+中的函数指针+/CLI_C++ Cli - Fatal编程技术网

C++ cli C+中的函数指针+/CLI

C++ cli C+中的函数指针+/CLI,c++-cli,C++ Cli,我正在创建使用第三方工具API的C++/CLI应用程序。其中一个API在帮助文档中声明如下 Error GetDrawingComponents(Drawing oDrawing,DrawingComponentVisit compVisit,DrawingComponentFilter compFilter) Error (*DrawingComponentVisit) (DrwSolid solid,Error status) Error (*DrawingComponentFilt

我正在创建使用第三方工具API的C++/CLI应用程序。其中一个API在帮助文档中声明如下

 Error GetDrawingComponents(Drawing oDrawing,DrawingComponentVisit compVisit,DrawingComponentFilter compFilter)

Error (*DrawingComponentVisit) (DrwSolid solid,Error status) 

Error (*DrawingComponentFilter) (DrwSolid solid,Error status,Filter filStatus)
现在我已经在我的.CPP应用程序中使用了这个API,我使用它的方式如下-

  Error chkError =  GetDrawingComponents(Drawing oDrawing,(DrawingComponentVisit)oClsObj::VisitDrawingComponents,(DrawingComponentFilter)oClsObj::FilterDrawingComponents);
CPP文件还包含VisitDrawingComponents和FilterDrawingComponents的定义。它们在.h文件中声明如下:

Error VisitDrawingComponents(DrwSolid solid,Error status); 
Error FilterDrawingComponents(DrwSolid solid,Error status,Filter filStatus);
所以现在使用上面的方法,我得到了类型转换错误

Error   1   error C2440: 'type cast' : cannot convert from 'overloaded-function' to 'DrawingComponentVisit'

<>我可以用同样的方法,如果我有非托管C++应用程序。请告诉我,要在C++/CLI应用程序中实现此功能,我需要做哪些更改?

永远不要使用强制转换来尝试将函数指针敲入正确的形状。删除它,您将得到关于不匹配的更好的错误消息。如果您没有告诉编译器这些函数是非托管函数,请在#include.Ok周围使用#pragma un/managed,现在我已经删除了类型转换并修改了调用,因为错误为chkeror=GetDrawingComponents(Drawing oDrawing,&oClsObj::VisitDrawingComponents,&oClsObj::FilterDrawingComponents);现在,我收到另一条错误消息-error 1 error C3374:无法获取oClsObj::visitDrawingComponents的地址无需创建委托实例,这样看起来更好。仍然不知道oClsObj可能是什么,它不会出现在您的代码片段中的任何地方。如果希望本机代码调用托管方法,则确实需要委托。