Инициализация массива в Managed C ++ - PullRequest
7 голосов
/ 07 мая 2009

Я хочу объявить и инициализировать 1D управляемый массив элементов.

Если бы это был код C #, я бы написал так:

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

Я пытаюсь написать (ну, собственно, я пишу программу для генерации) то же самое в управляемом C ++ ...

Пока у меня есть:

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");

Есть две проблемы с этим:

  1. Это более многословно
  2. Требуется, чтобы я объявил размер массива заранее, что неудобно для моего генератора кода

Существует ли синтаксис "инициализация массива" для массивов GC в Managed C ++? Какой правильный синтаксис? Есть ли хорошая веб-ссылка на этот и другие подобные вопросы?

Ответы [ 2 ]

29 голосов
/ 07 мая 2009

Синтаксис объявления и инициализации массива C ++ / CLI не отличается от синтаксиса в C #. Вот пример ...

array<String^>^ myArray = gcnew array<String^> {"first",  "second"};
0 голосов
/ 07 мая 2009

Страница MSDN с синтаксисом управляемого массива: http://msdn.microsoft.com/en-us/library/ts4c4dw6(VS.80).aspx

...