c++ - 在托管和非托管代码中使用事件
问题描述
我主要处理非托管代码,最近我必须使用 CLI/C++ 项目。一些文件是非托管代码,所以当我使用#pragma managed(push, off)
完整的非托管代码时,我们一直在 Ref 类中使用 event 和 deligate。
event someHandler^ someEvent;
public delegate void someHandler(ManagedCpp::sharedPtr<std::string> ^);
但是现在我需要为托管和非托管的混合创建相同的机制。因此,当我将该模型视图类设为托管时,我无法将其包含在非托管类中。
托管课程,我将在其中挑战事件并委托...
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
谁能帮我解决这个遇到的问题?
解决方案
推荐阅读
- r - summary.eRm confint:95% 置信区间或 97.5% 使用 summary(rasch.model)
- ios - 更新到 Xcode 11.3.1 后,在 Xamarin Forms iOS 项目中出现错误“无法解析 AuthenticationServices.IASAuthorizationControllerDelegate”
- directx - 由于 DirectX 问题,我无法启动应用程序
- mysql - 如何运行查询以提取特定表的所有字段以显示具有某些单词的名称
- javascript - 获取未捕获的 ReferenceError: auth is not defined 错误但已定义
- r - 在 glmulti 中定义包装函数
- python - 在 python pandas 中创建交叉表,显示存在哪些值
- java - 当 HTTP 响应超时时,@Transactional 会回滚吗?
- sql - Apache Ignite 中的 SQL 表查询很慢
- pandas - 为什么在绘制数据透视表时在图例标题中显示“无”?