Инициализация массива в управляемом C ++

Я хочу объявить и инициализировать 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. Это требует, чтобы я заранее объявил размер массива, что неудобно для моего генератора кода.

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


person Paul Hollingsworth    schedule 07.05.2009    source источник


Ответы (2)


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

array<String^>^ myArray = gcnew array<String^> {"first",  "second"};
person Martin    schedule 07.05.2009
comment
В декомпиляторе C ++ / CLI для отражателя по какой-то причине отсутствовали gcnew и тип массива в объявлении. Добавление этого устранило проблему. Спасибо. sandpapersoftware.com/Main/Reflector.html - person jpierson; 26.03.2012

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

person Tim Robinson    schedule 07.05.2009