2009-05-07 20 views
5

1Dで管理される項目の配列を宣言して初期化したいとします。Managed C++での配列の初期化

それはC#のコードだった場合、私はこのようにそれを記述します。

VdbMethodInfo[] methods = new VdbMethodInfo[] { 
    new VdbMethodInfo("Method1"), 
    new VdbMethodInfo("Method2") 
}; 

を私は(まあ、実際には、私が生成するプログラムを書いている)を書き込むために管理C++で同じことをしようとしています。.. 。

これまでのところ、私が持っている:

    01:

    typedef array<VdbMethodInfo^, 1> MethodArray; 
    // How do I avoid pre-declaring the size of the array up front? 
    MethodArray^ methods = gcnew MethodArray(2); 
    methods[0] = gcnew VdbMethodInfo("Method1"); 
    methods[1] = gcnew VdbMethodInfo("Method2"); 
    

    をこの2つの問題があります。

  1. それはマネージドC++でのGCアレイの「アレイの初期化」構文があります私のコードジェネレータ

のために不便である、アップフロント配列のサイズを宣言するために私を必要と

  • より冗長なのか?正しい構文は何ですか?これと他の同様の質問の良いウェブリンクはありますか?

  • 答えて

    25

    C++/CLI配列宣言&の構文の初期化は、C#の構文と似ていません。ここでは一例です管理されているアレイの構文上の...

    array<String^>^ myArray = gcnew array<String^> {"first", "second"}; 
    
    +1

    おかげで - 私が探していたまさに! –

    +0

    何らかの理由でリフレクタ用のC++/CLIデコンパイラが宣言でgcnewと配列型を欠いていました。これを追加すると問題が解決しました。ありがとう。 http://www.sandpapersoftware.com/Main/Reflector.html – jpierson