@blisher: statyczna musisz chyba gdzieś w zakresie globalnym już po deklaracji klasy zainicjować, natomiast zmianę jej najłatwiej w konstruktorze i destruktorze zrobić. #chyba #niechcemisiesprawdac #yoda
@blisher: a czy czasem zmienne statyczne nie są inicjalizowane zerem? Wtedy byś nie musiał jej sam inicjalizować jeśli miała by liczyć ilość istniejących obiektów. Wystarczy inkrementacja/dekrementacja w konstruktorze/destruktorze.
Mam jakąś klasę, X i chcę żeby zmienna statyczna
int counter
zliczała mi ilość obiektów klasy. Jak zainicjować tą zmienną, jeżeli jest ona prywatna?
#programowanie #cpp #blisherkodzi
Komentarz usunięty przez autora
{
private:
static int counter;
public:
przyklad(){counter++;}
~przyklad(){counter--;}
static void wypisz(){std::cout<
};
int przyklad::counter=0;
int tmain(int argc, TCHAR* argv[])
{
przyklad test;
przyklad dwa;
przyklad::wypisz();
return 0;
}
counter
jest prywatny.
int przyklad::counter=0;
ta linijka musi być w pliku .cpp
edit:
wystarczy bez =0
"... w związku z tym podobnie jak zmienne globalne inicjalizowany jest autoatycznie zerem."
Chyba, że się coś zmieniło w c++11...
edit.
czyli wystarczy definicja
Nie zmienia to jednak faktu, że
static int x;
w definicji klasy to tylko deklaracja zmiennej
x
, a jej definicja wciąż musi zostać zawarta w pliku .cpp.