2011-03-07 44 views
1

說我有一個像類以下內容:要求/ CLR容器元素

public ref class MyClass {}; 

我想有這樣一類的物體的向量:

cliext::vector<MyClass ^> ^myVector; 

我明白這是一個引用類型句柄的向量,不是嗎?我的意思是,這是不是引用類型的載體,所以我不需要定義任何的這些要求:

Requirements for STL/CLR Container Elements

這些要求,有必要的情況下,我定義cliext::vector<MyClass> ^myVector,因爲那時候的副本每個元素將被存儲在容器中,並等等。

是這樣嗎?因爲當我從矢量中檢索一個元素時,我得到了一個NullReferenceException。我可以看到這個對象是正確構造的,但是當我從載體中獲取它的所有成員時,它們都是未定義的。

回答

2

的STL/CLR庫交付非常末,原來承諾的發貨日期後三年。很明顯,爲什麼它將原生C++容器類的所有缺點與管理內存管理的缺點相結合。沒有好處,圖書館沒有單一的贖回價值。它與C++類的兼容性只是一種負擔,妨礙了你做正確的事情。回顧this page的恐怖故事。

不要投入任何時間來完成這項工作,這完全是浪費精力。使用System :: Collections :: Generic命名空間中的類。

+0

那怎麼樣。我的代碼現在看起來更好用列表。非常感謝您的提示! – 2011-03-08 08:48:09