2009-05-07 9 views
5

Je souhaite déclarer et initialiser un tableau d'éléments gérés 1D.Initialisation de tableau dans C++ géré

Si c'était le code C#, je l'écrire comme ceci:

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

Je suis en train d'écrire (bien, en fait, j'écris un programme engendrons) la même chose en C++ géré .. .

jusqu'à présent, j'ai:

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

Il y a deux problèmes avec ceci:

  1. Il est plus bavard
  2. Il me demande de déclarer la taille du tableau à l'avant, ce qui est gênant pour mon générateur de code

Y at-il une syntaxe « initialisation tableau » pour les tableaux de GC en C++ géré? Quelle est la syntaxe correcte? Y a-t-il un bon lien Web pour ceci et d'autres questions semblables?

Répondre

25

Le tableau C++/CLI déclare & la syntaxe d'initialisation n'est pas différente de celle de C#. Voici un exemple ...

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

merci - exactement ce que je cherchais! –

+0

Le décompilateur C++/CLI du réflecteur manquait le type gcnew et le type de tableau dans la déclaration pour une raison quelconque. Ajoutant cela a corrigé le problème. Merci. http://www.sandpapersoftware.com/Main/Reflector.html – jpierson

Questions connexes