我正在尝试用托管 C++ 编写一个应用程序,但我无法弄清楚如何声明一个字符串数组。
字符串^ linet[];
抛出错误
'System::String ^' : 本机数组不能包含此托管类型
所以我想对于托管数据类型有不同的方法来做到这一点。它到底是什么?
我正在尝试用托管 C++ 编写一个应用程序,但我无法弄清楚如何声明一个字符串数组。
字符串^ linet[];
抛出错误
'System::String ^' : 本机数组不能包含此托管类型
所以我想对于托管数据类型有不同的方法来做到这一点。它到底是什么?
您真的是指托管 C++ 吗?不是 C++/CLI?
假设您实际上使用的是 C++/CLI(由于您发布的错误消息),有两种方法可以做到这一点:
array<String^>^ managedArray = gcnew array<String^>(10);
将创建一个托管数组,即与 C# 中的 string[] 类型相同。
gcroot<String^>[] unmanagedArray;
将创建一个非托管 C++ 数组(我从未真正尝试过使用数组进行此操作 - 它适用于 stl 容器,因此它也应该在这里工作)。
http://www.codeproject.com/KB/mcpp/cppcliarrays.aspx
那应该有你需要的所有答案:)
使用托管 C++(又名 C++/CLI 又名 C++/CLR)时,您需要在所做的每一件事中考虑变量类型。任何“托管”类型(基本上,从 System::Object 派生的所有内容)都只能在托管上下文中使用。一个标准的 C++ 数组基本上在堆上创建一个固定大小的内存块,大小为 (type) x NumberOfItems 个字节,然后遍历它。不能保证托管类型在堆上保持与原来相同的位置,这就是为什么你不能这样做:)
您使用 .Net 中的集合类。例如:_
List<String^>^ dinosaurs = gcnew List<String^>();