Hola Ender.
Deberias de haberlo posteado en el foro de c++ ya que trata de ello.
No se si quieres realizar en c++ o te has equivocado de proyecto, en cualquier caso, como tu codigo es c++, te pongo el codigo de como realizarlo.
// numero de labels
int count = 20;
// crear el array con 20 labels
array<System::Windows::Forms::Label ^> ^ labels =
gcnew array<System::Windows::Forms::Label ^>(count);
// crear los 20 labels y añadirlos al form
for (int a = 0; a < count; a++)
{
labels[a] = gcnew System::Windows::Forms::Label();
((System::Windows::Forms::Label^)labels[a])->Text = "label" + a.ToString();
((System::Windows::Forms::Label^)labels[a])->Left = 20;
((System::Windows::Forms::Label^)labels[a])->Top = 25 * a;
this->Controls->Add(labels[a]);
}
Debes de tener en cuenta varias cosas a la hora de programar con c++ en codigo manejado y una de ellas es que una matriz nativa no puede contener codigo administrado, de modo que no puedes hacer algo como esto:
System::Windows::Forms::Label b[100];
Para trabajar con .net es bastante mas sencillo realizarlo con un lenguaje como c#, c++ se suele utilizar sobre .net para crear interfaces al codigo no manejado como acceso a la api de win32, aunque se puede realizar con c# pero esto requiere el uso de interop y definir las llamadas, mientras que c++ ya tiene todas las definiciones en windows.h y otros archivos de cabecera.
Saludos
David González