我正在尝试创建System :: String ^的向量,我尝试使用直接向上的STL向量,但是vector<String ^> my_vector
给出了C4439错误(函数需要具有__clrcall调用约定。
所以,我将__clrcall添加到我的函数原型中,它仍然抱怨我声明vector<String ^>
。
我也正在阅读VC ++库中的MSDN页面,但我还没找到我需要的东西,那里的任何人都知道我需要什么?感谢。
答案 0 :(得分:1)
您正在尝试将托管对象(String)置于非托管对象的控制之下,但托管堆可以在内存中移动内容,这对于向量来说是个问题。基本上,您不能将托管对象粘贴到STL容器中,尽管可以在托管C ++中使用固定(我没有尝试过)并从中获取实际的char *。
然而,.NET提供了类似的类,例如List<T>
泛型,它将为您做同样的事情,但是在托管代码中。如果您使用的是较旧版本的.NET,请查看ArrayList
,Stack
或Queue
等内容。