C++ BUILDER 6. Pętla na wszystkich obiektach typu ...

0

Witam, mam w projekcie n obiektów typu shape o nazwach Shape1, Shape2 , ...., Shapen. Chciałbym teraz pobrać wartość jakiejś zmiennej każdego z nich i zapisać w tablicy. Jak to zrobić? Czy warto się z tym męczyć? Może powinienem użyć tablicy obiektów TShape shape[10]
? Podsuńcie mi najlepsze rozwiązanie.

1

jak masz shape1, shape2, shapeN to powinienes uzyc jakies struktury do przechowywania tych obiektow. Jezeli chcesz znac wartosc kazdego z nich to robisz po nich petle i wydobywasz ta wartosc i zapisujesz gdzie tam potrzebujesz

0

Ok, mam strukturę. Teraz potrzebuję przypisać do niej wszystkie obiekty typu Shape ? Da się jakoś szybko w pętli czy muszę ręcznie?

0

Dlaczego to nie działa

struct Shapes
{
        TShape * shape;
};
Shapes s[2] = {
        Form1->Shape1,
        Form1->Shape2
};

Kompiluje, ale zaraz przy uruchomieniu przechwycony jest wyjątek z komunikatem "Access Violation at adress 0041..."

1

bo nie wiesz jak zrobic to co chcesz zrobic. Po pierwsze utworz te shape1,2,3,4,5,6 w petli, tworzac je dodaj do struktury (tablica to takze struktura). Struktura ktora podales jest bez sensu. Uzyj wektora lub listy (w zaleznosci od tego co potrzebujesz). Twoj kod jest po prostu zly bo nic nie przypisujesz temu wskaznikowi ktory jest w strukturze.

0

Nie prawda. Kod jest dobry jednak był wywołany w złym momencie. Jeżeli tworzył bym Shapy dynamicznie w tablicy obiektów cały problem jaki opisałem w tym wątku nie mógł by wystąpić.

0

W klasie formy robisz: TShape *shape[10];
W konstruktorze lub OnCreate:

shape[0]=Shape1;
shape[1]=Shape2;
shape[2]=Shape3;
...

1 użytkowników online, w tym zalogowanych: 0, gości: 1