我有一个未管理的 C++ 类,我用未管理的 dll 编写。我有一个引用非托管 dll 的托管 dll。托管 dll 中的类可以派生自非托管类吗?
使用 Visual Studio 2008
我有一个未管理的 C++ 类,我用未管理的 dll 编写。我有一个引用非托管 dll 的托管 dll。托管 dll 中的类可以派生自非托管类吗?
使用 Visual Studio 2008
你不能。托管类的实例在 CLR 堆上进行垃圾收集和创建。非托管类的实例分配在非托管堆上。您如何能够创建一个对象,其数据部分位于托管堆上,其基础数据位于非托管堆上?
您应该尝试其他技术,例如将托管容器包装在非托管事物上,反之亦然,并可能从中派生。
你还不能。Herb Sutter 写了一篇详尽的C++/CLI Design Rationale,他暗示有一天这样的事情确实可能实现。但是,微软似乎停止了 C++/CLI 的进一步开发?
您能做的最好的事情是将您的非托管类包装在管理器包装器中,然后从中派生。