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
codice:
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;
}
(ovviamente commentando la riga
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!