Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

Wspólne pole elementów jednego obiektu

Ostatnio zmodyfikowano 2016-12-27 19:05
Autor Wiadomość
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:
C/C++
class KL
{
public:
    int a;
}

Teraz w main tworzę dwa obiekty tej klasy:
C/C++
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ąć?
P-155536
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).
P-155537
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 :(
P-155539
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.
P-155549
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.
P-155553
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ą.
P-155561
« 1 »
  Strona 1 z 1