Mam problem z utworzeniem dwuwymiarowej, dynamicznej tablicy komponentów w Visual Studio '08.
rozwiązanie 1: tablica dwuwymiarowa. każdy wiersz tabeli musi mieć ten sam rozmiar (tablica prostokątna)
array<TextBox^,2> ^tablica1 = gcnew array<TextBox^,2>(10,10); // N,M
rozwiązanie 2: tablica tablic. każdy wiersz może mieć inny rozmiar (tablica „poszarpana”)
array<array<TextBox^>^> ^tablica2 = gcnew array<array<TextBox^>^>(10); // N
for each (array<TextBox^>^ %row in tablica2)
row = gcnew array<TextBox^>(10); // M
jeśli tablica ma być prostokątna (N × M) wygodniejsze jest stworzenie prawdziwej tablicy 2-wymiarowej zamiast — jak sugerowałeś — tablicy tablic.
tylko jak później stworzyć w tych tablicach obiekty?
No jak jak? normalnie:
tablica1[3,2] = gcnew TextBox(); // tablica 2-wymiarowa: przecinek
tablica2[3][2] = gcnew TextBox(); // tablica zagnieżdżona: dwa indeksy
oczywiście wypadałoby to zrobić w jakiejś pętli.
PS. dla uproszczenia zapisu przyjąłem, że jesteśmy w using namespace System::Windows::Forms;
.
PS2. w VC++ 2010 dodano inferencję typów, można napisać
auto tablica1 = gcnew array<TextBox^,2>(10,10); // „auto” - standard C++0x. odpowiednik słowa „var” z C#
zaoszczędza to podwójnego lub potrójnego pisania wężowideł typu.