2009-10-01 87 views
0

我試圖創建System :: String向量,我嘗試使用直向上的STL向量,但vector<String ^> my_vector給出了C4439錯誤(函數需要有__clrcall調用約定。如何在VC++中創建String ^的可變長度數組/向量

所以,我說__clrcall我的函數原型,它仍然抱怨我的vector<String ^>聲明。

我還通過對VC++庫中的MSDN上讀到,但我還沒有找到需要的東西,任何人都知道我需要什麼?謝謝。

回答

1

您正在嘗試把託管對象(字符串)置於非託管對象的控制下,但託管堆可以在內存中移動事物,這對於向量來說是一個問題。基本上,您不能將託管對象粘貼到STL容器中,儘管它可能在被託管的C++中允許使用固定(我沒有嘗試過)並獲取實際的char *。

但是,.NET提供了類似的類,例如List<T>泛型,它會爲您執行相同的操作,但在託管代碼中。如果您使用的是舊版本的.NET,請參閱ArrayList,StackQueue

+0

ArrayList幾乎就是我所希望的,但是由於某種原因我找不到它。謝謝。 – thepocketwade 2009-10-01 02:22:37

+1

沒有問題。如果你可以使用通用的'List ',那麼這是一個更好的選擇,因爲你會得到類型檢查,你不會得到一個ArrayList。 – 2009-10-01 02:24:33