klasy zawierajace siebie na wzajem

0

chce miec klase Nadrzedna przechowujaca klasy podrzedne.
Chcialbym miec tez dostep z klasy podrzednej do nadrzednej.

wiec napisalem:

Type
  
  TKontener = class
  {...}
    zawartosc: array of TElement;
  end;

  Telement = class
  {...}
    kontener: TKontener;
  end;

no i nie dziala bo oczywiscie na poziomie deklaracji TKontener nie jest jeszcze znana klasa TElement.

Moznaby zamiast
zawartosc: array of TElement napisac
zawartosc: array of TObject
ale wtedy przy odwolywaniu sie do elementow tablicy trzeba by za kazdym razem zutowac je na TElement. Bylaby wtedy tez mozliwosc wstawienia do tablicy czegos innego, a tego chcialbym uniknac.

Co polecacie w takim wypadku?

0

Od pewnego czasu widzę, że trenujesz niezwylke dziwne sztuki z dziedziczeniem i widocznością klas. Poczytaj troszkę o tym jak stworzyć prawidłowo hierarchę klas i wówczas nie będziesz się borykał z takimi problemami.

0

powiem tak - też miałem ostatnio podobny problem, tzn przy zmienianiu czegoś w klasie, która była dostępna przez property klasy głównej musiałem uaktualniać coś w klasie głównej. Rozwiązaniem najelegantszym są zdarzenia, tzn w klasie, która jest elementem klasy głównej definiujesz <ort>zdażenie </ort>a w klasie głównej metodę, która będzie wywoływana w momencie zajścia zdarzenia

0
Oleksy_Adam napisał(a)

Od pewnego czasu widzę, że trenujesz niezwylke dziwne sztuki z dziedziczeniem i widocznością klas.

"true, true...":D

Oleksy_Adam napisał(a)

Poczytaj troszkę o tym jak stworzyć prawidłowo hierarchę klas i wówczas nie będziesz się borykał z takimi problemami.

...a mozesz cos polecic?

0
  Telement=class;  //deklaracja zapowiadająca

  TKontener = class
  {...}
    zawartosc: array of TElement;
  end;

  Telement = class
  {...}
    kontener: TKontener;
  end;
0

Lista jednokierunkowa(lub dwu) nie wystarczy do rozwiazania problemu?Widze ze do tego dazysz.

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