klasy, błąd w programie.

0

Witam, uczę się c++ i mam problem z classami. Napisałem sobie programik aby zrozumieć zmienna statyczną, ale nie działa, próbowałem już wielu trików ale nic.

#include <iostream.h>

class test {
public:   
int jeden;
static int dwa;

test() {
jeden++;
dwa++;       

}      

};

main()
{

test he, heh;

cout << he.jeden << he.dwa << endl;
cout << heh.jeden << heh.dwa << endl;

test hehe;
cout << hehe.jeden << hehe.dwa << endl;

system("PAUSE");     
}

Wiem że to tylko wyświetlanie, ale o to mi chodzi. :P

1

Aby móc używać zmiennej statycznej musisz ją zainicjalizować czyli:

#include <iostream.h>

class test {
public:   
int jeden;
static int dwa;

test() {
jeden++;
dwa++;       

}      

};

int test::dwa = 0; 

main()
{

test he, heh;

cout << he.jeden << he.dwa << endl;
cout << heh.jeden << heh.dwa << endl;

test hehe;
cout << hehe.jeden << hehe.dwa << endl;

system("PAUSE");     
}
1

Nie tyle zainicjować co zdefiniować.

struct Foo {
    static int bar; // deklaracja - deklarujemy, że taka zmienna istnieje
};

int Foo::bar; // definicja - utworzenie zmiennej, definicja ma być w pliku .cpp
0

Ok. A zmienna statyczna, to zmienna która jest ta sama dla wszystkich obiektów w danej klasie?

Czyli jest klasa test, obiekt statyczny x.

1obiekt, 2obiekt, 3obiekt - I jak przypisze coś do x, poprzez klase lub obiekt, to ona się automatycznie zmienia dla wszystkich obiektów, ta?

1

To nie jest tak, że każdy obiekt ma takie pole i jest ono "synchronizowane" pomiędzy istniejącymi obiektami. Pola statyczne klas są niezależne od obiektów, są podobne do zmiennych globalnych. Możne je używać nie odwołując się do jakiegokolwiek obiektu:

cout << Foo::bar;

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