Wpis z mikrobloga

@blisher: class przyklad

{

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;

}
@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.
@smaleckg: zajrzałem szybko do Symfonii i:

"... 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
@ChybaTak: Masz rację, zmienne statyczne - także te w strukturach/klasach - są inicjalizowane zerem (punkty 9.5 i 3.6.2 w najnowszym standardzie).

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.