Vorrei capire perche' questo funziona:
codice:class Rect { public: Rect() {num ++;} ~Rect() {num --;} static void pippo(){num ++;}; protected: static int num; }; int num = 0; main(){}
e questo no.
codice:class Rect { public: Rect() {num ++;} ~Rect() {num --;} static void pippo(); protected: static int num; }; int num = 0; void Rect::pippo() {num ++;} main(){}
Perche' devo per forza definire la funzione dentro la dichiarazione della classe?
Tra l'altro lo stesso errore viene fuori con il codice d'esempio pubblicato qui (sez 10.1):
http://www.icce.rug.nl/documents/cpl...lusplus10.html
(ovviamente commentando la rigacodice:class Test { static int s_private_int; public: static int s_public_int; }; int main() { Test::s_public_int = 145; // ok Test::s_private_int = 12; // wrong, don't touch // the private parts return 0; }
Test::s_private_int = 12; // wrong, don't touch)
quindi e' un errore subdolo, sfuggito anche a chi scrive articoli seri...
Grazie a tutti e ciao!

Rispondi quotando