你能从非托管C ++类派生一个托管C ++类吗?

时间:2009-02-02 22:20:48

标签: visual-c++ c++-cli unmanaged managed-c++

我有一个无人管理的C ++类,我用无人的dll写的。我有一个托管的dll引用了非托管的dll。托管dll中的类可以来自非托管类吗?

使用Visual Studio 2008

3 个答案:

答案 0 :(得分:5)

你做不到。托管类的实例是在CLR堆上进行垃圾收集和创建的。非托管类的实例在非托管堆上分配。你怎么能够创建一个对象,其数据部分位于托管堆上,而其基础数据位于非托管堆上?

你应该尝试其他技术,例如将托管容器包装在非托管事物上,反之亦然,并从中派生出来。

答案 1 :(得分:1)

你不能。赫伯萨特写了一篇广泛的C++/CLI Design Rationale,他暗示有一天这样的事情确实可能发生。但是,似乎微软已停止进一步开发C ++ / CLI?

答案 2 :(得分:0)

你能做的最好的事情就是在管理器包装器中包装你的非托管类,然后从中派生出来。