Variabile static per tenere traccia del numero di istanze

di Anonimizzato13817 il
2 risposte
Salve a tutti di nuovo, ho un altro quesito da porvi:

Se io volessi fare in modo di avere una variabile che tiene conto del numero di istanze di una classe dovrei fare una cosa del genere:
protected:
	static int _id;
Poi nel costruttore di classe:
Shape::Shape()
{
	_id++;
	_area = 0.0;
}
almeno credo.

Però quando compilo mi viene restituito questo errore:
error LNK2001: simbolo esterno "public: static int Shape::_id" (?_id@Shape@@2HA) non risolto
e non capisco dove sia il problema.

Grazie per la comprensione

2 Risposte

  • Una variabile statici in C++ esiste a prescindere dall'instanza della classe, per cui va inizializzata a parte.
    
    // nel file.h
    protected:
       static int _id;
    
    // nel file .cpp
    
    int NomeClasse::id = 0; 
    
  • Tutto chiaro, grazie mille ancora
Devi accedere o registrarti per scrivere nel forum
2 risposte