我主要从事非托管代码的工作,最近我的工作必须使用CLI / C ++项目。有些文件是非托管代码,因此在包含这些文件的同时,我使用#pragma managed(push, off)
我在完整的非托管代码中看到我们一直在Ref类中使用event和deligate。
event someHandler^ someEvent;
public delegate void someHandler(ManagedCpp::sharedPtr<std::string> ^);
但是现在我需要为托管和非托管混合创建相同的机制。因此,当我将Model视图类设为托管类时,我无法将其包含在非托管类中。
我将在其中定义事件并委托的托管类...
public delegate void someHandler(ManagedCpp::sharedPtr<std::string> ^);
class ModelView{
managedCpp::sharedPtr ^ memberPtr
public:
event someHandler^ someEvent;
ModelView(){
memberPtr= gcnew managedCpp::sharedPtr<std::string>
}
//some other functions
// a getter() to get the memberPtr
// a setter() to set the value of memberPtr
}
因此,我需要将此类包含在其他一些类别中,这些类别中有些是托管的,而有些则是非托管的。
当我将其包含在托管类中时,它将引发错误。
error C3821: 'memberPtr': managed type or function cannot be used in an unmanaged function
任何人都可以帮助我如何解决遇到的问题吗?