Wspólne pole elementów jednego obiektu
Ostatnio zmodyfikowano 2016-12-27 19:05
Warmix Temat założony przez niniejszego użytkownika |
Wspólne pole elementów jednego obiektu » 2016-12-27 16:45:02 Mam taki problem: klasa KL, która ma pole np: Teraz w main tworzę dwa obiekty tej klasy: void main() { KL * first; first = new KL[ 2 ]; KL * sec; sec = new KL[ 2 ]; } Chciałbym teraz uzyskać coś takiego, że dla 2 elementów pierwszego obiektu first ustawiam a=1 i teraz odwołując się do tego pole nie ważne przez który element, to zawsze mam tą samą wartość. To samo dotyczy drugiego obiektu sec, ustawiam a=2 i oba elementy z tego obiektu mają a=2 W jaki sposób mogę coś takiego osiągnąć? |
|
michal11 |
» 2016-12-27 17:06:53 do tego używa się słowa kluczowego static, zmienna statyczna w klasie jest wspólna dla wszystkich obiektów tej klasy (a nawet nie potrzebuje konkretnego obiektu żeby się odwołać do tego pola). |
|
Warmix Temat założony przez niniejszego użytkownika |
» 2016-12-27 17:15:24 Zanim edytowałem posta, też sądziłem, że to poprzez static, ale static nie działa tak, że ustawia jedno pole, ale nie tylko dla elementów tego samego obiektu, ale właśnie wszystkich obiektów, czyli w tym przypadku zarówno elementy obiektu first i sec po ustawieniu dla sec 2, to wszystko będzie miało 2? A tu chodzi o to, że każdy obiekt ma inną wartość.
Możesz dać jakiś przykład, ale z zastosowaniem dynamicznej alokacji pamięci, bo wcześnie coś z tym próbowałem, ale non stop same błędy :( |
|
michal11 |
» 2016-12-27 18:03:37 Przeczytałem kilka razy twój pierwszy post i nie rozumiem o co ci chodzi. Napisz może jak wyobrażasz sobie korzystanie z takiej klasy i jak chcesz żeby wyglądał kod. |
|
Warmix Temat założony przez niniejszego użytkownika |
» 2016-12-27 18:18:05 Chodzi o ustawienie parametru dla wszystkich elementów danego obiektu.
Dla przykładu: Ustawiam parametr a na 1 dla wszystkich elementów obiektu first i otrzymuję: first[0].a zwraca 1 first[1].a zwraca 1
Ustawiam parametr a na 2 dla wszystkich elementów obiektu sec: sec[0].a zwraca 2 sec[1].a zwraca 2
itd. Czy jestem w stanie otrzymać takie coś szybko, tzn. właśnie za pomocą static czy czegoś podobnego, bez konieczności np. ustawiania dla każdego elementu z osoba, czy to przez jakieś kopiowanie czy inną rzecz. |
|
michal11 |
» 2016-12-27 19:05:24 Ok, nie zauważyłem, że chodzi ci o tablice. W takim razie odpowiedź brzmi nie, nie ma wbudowanego w język systemu do automatycznego ustawiania parametru dla obiektów danej klasy tylko w obrębie jednej tablicy. Możesz zrobić to funkcją, swoją klasą lub zwykłą pętlą. |
|
« 1 » |