Salve a tutti, sto studiando la programmazione ad oggetti e ho un problema con l'uso delle variabili statiche.
Come programma sto utilizzando Code :: Blocks, quando vado a compilare il programma mi restituisce il seguente errore:
error:id returned 1 exit status
Il programma è il seguente(è suddiviso in tre file):
il programma principale che richiama la classe:
#include <iostream>
#include "Counter.h"
using namespace std;
int main()
{
int i;
cout << "inserire numero: " << endl;
cin>>i;
Counter c;
c.somma(i);
c.stampa();
return 0;
}
Il file contenente la dichiarazione della classe:
#ifndef COUNTER_H_INCLUDED
#define COUNTER_H_INCLUDED
class Counter
{
private:
static int contatore;
int valore;
public:
Counter();
virtual ~Counter();
void somma(int x);
void stampa();
};
#endif // COUNTER_H_INCLUDED
Infine c'è il file contenente l'implementazione della classe:
#include <iostream>
#include "Counter.h"
using namespace std;
Counter::Counter()
{
// TODO Auto-generated constructor stub
contatore = 0;
valore = 0;
}
Counter::~Counter() {
// TODO Auto-generated destructor stub
}
void Counter :: somma(int x)
{
valore = valore + x;
contatore ++;
}
void Counter :: stampa()
{
cout<<"valore: " <<valore;
cout<<"cont: " << contatore;
}
Lo stesso codice funziona se vado a togliere il termine static all'interno della file header, inserendolo iniziano i problemi; inoltre il compilatore mi restituisce anche il seguente errore:
undefined reference to 'Counter::contatore
Grazie