C++ cli C+中的函数指针+/CLI
我正在创建使用第三方工具API的C++/CLI应用程序。其中一个API在帮助文档中声明如下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
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可能是什么,它不会出现在您的代码片段中的任何地方。如果希望本机代码调用托管方法,则确实需要委托。