2009-05-07 17 views
5

Deseo declarar e inicializar una matriz de elementos administrada 1D.Inicialización de la matriz en C++ administrado

Si se trata de código C#, lo escribiría así:

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

Estoy tratando de escribir (bueno, en realidad, estoy escribiendo un programa generan) lo mismo en C++ administrado .. .

hasta ahora tengo:

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

Hay dos problemas con este:

  1. Es más detallado
  2. Se me obliga a declarar el tamaño de la matriz en la delantera, lo cual es inconveniente para mi generador de código

¿Hay una "matriz de inicialización" sintaxis de matrices de GC en C++ administrada? ¿Cual es la sintaxis correcta? ¿Hay un buen enlace web para esta y otras preguntas similares?

Respuesta

25

La matriz C++/CLI declara & la sintaxis de inicialización no es diferente de la de C#. He aquí un ejemplo ...

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

gracias - exactamente lo que estaba buscando! –

+0

El decompilador de C++/CLI para el reflector no tenía el tipo de fuente y el tipo de matriz en la declaración por algún motivo. Agregar eso solucionó el problema. Gracias. http://www.sandpapersoftware.com/Main/Reflector.html – jpierson

Cuestiones relacionadas