8

Managed C++ でアプリケーションを作成しようとしていますが、文字列の配列を宣言する方法がわかりません。

文字列^ linet[];

エラーをスローします

'System::String ^': ネイティブ配列にこのマネージド型を含めることはできません

したがって、管理されたデータ型に対してこれを行う別の方法があると思います。正確には何ですか?

4

3 に答える 3

11

本当にマネージ C++ のことですか? C++/CLI ではありませんか?

実際に C++/CLI を使用していると仮定すると (投稿したエラー メッセージのため)、これを行うには 2 つの方法があります。

array<String^>^ managedArray = gcnew array<String^>(10);

マネージド配列、つまり C# の string[] と同じ型を作成します。

gcroot<String^>[] unmanagedArray;

アンマネージ C++ 配列を作成します (実際に配列でこれを試したことはありません。stl コンテナーでうまく機能するので、ここでも機能するはずです)。

于 2009-06-15T10:44:11.793 に答える
4

http://www.codeproject.com/KB/mcpp/cppcliarrays.aspx

それはあなたが必要とするすべての答えを持っているはずです:)

マネージ C++ (別名 C++/CLI 別名 C++/CLR) を使用する場合、すべての作業で変数の型を考慮する必要があります。「管理された」タイプ (基本的に、System::Object から派生したものすべて) は、管理されたコンテキストでのみ使用できます。標準 C++ 配列は、基本的にヒープ上に sizeof(type) x NumberOfItems バイトの固定サイズのメモリ ブロックを作成し、これを反復処理します。管理された型は、元のヒープと同じ場所に留まることが保証されていないため、そうすることができません:)

于 2009-06-15T10:45:31.633 に答える
1

.Net のコレクション クラスを使用します。: _

List<String^>^ dinosaurs = gcnew List<String^>();
于 2009-06-15T10:46:09.980 に答える