我有一個unmanged C++類,我寫在一個unmanged DLL。我有一個託管的DLL引用非託管的DLL。託管DLL中的類可以從非託管類派生嗎?你能從一個非託管C++類派生一個託管C++類嗎?
使用Visual Studio 2008
我有一個unmanged C++類,我寫在一個unmanged DLL。我有一個託管的DLL引用非託管的DLL。託管DLL中的類可以從非託管類派生嗎?你能從一個非託管C++類派生一個託管C++類嗎?
使用Visual Studio 2008
你不能。託管類的實例被垃圾收集並在CLR堆上創建。非託管類的實例分配在非託管堆上。您怎麼能夠創建一個對象,其數據部分位於託管堆上,而其基礎數據位於非託管堆上?
您應該嘗試其他技術,例如將託管容器包裝在非託管事物上,反之亦然,並且可能從中派生出來。
您不能尚未。 Herb Sutter寫了一個廣泛的C++/CLI Design Rationale,他暗示這樣的事情有一天可能確實是可能的。但是,微軟似乎停止了C++/CLI的進一步開發?
你可以做的最好的事情就是將非託管類包裝在管理器包裝中,然後從中派生出來。
AFAIK,對象,而不是類,分配。非託管對象可以分配在堆棧或堆中。 儘管如此,您還是將非託管對象封裝在託管對象中。 – pyon 2009-03-21 05:42:27
你是對的術語。不過,我想強調你如何申報你的課程。這就是爲什麼我使用託管類而不是託管對象。 – 2009-03-21 08:02:26