View Full Version : [C++] Membri static di una classe
Non riesco a compilare il seguente codice. Il compilatore mi dice "undefined reference to `date::contatore' "
#include <iostream>
#include <stdio.h>
#include <conio.h>
using namespace std;
class date{
private:
int year;
public:
static int contatore;
date(int year_){
setyear(year_);
}
void setyear(int year_){
year=year_;
}
static int leggic(){
return contatore;
}
static int azzerac(){
contatore=0;
}
};
int main(){
date::azzerac();
date d1(2000);
date d2(2010);
cout<<"contatore: "<<date::leggic();
getch();
return 0;
cosa sbaglio?
vendettaaaaa
28-10-2013, 15:25
Non riesco a compilare il seguente codice. Il compilatore mi dice "undefined reference to `date::contatore' "
#include <iostream>
#include <stdio.h>
#include <conio.h>
using namespace std;
class date{
private:
int year;
public:
static int contatore;
date(int year_){
setyear(year_);
}
void setyear(int year_){
year=year_;
}
static int leggic(){
return contatore;
}
static int azzerac(){
contatore=0;
}
};
int main(){
date::azzerac();
date d1(2000);
date d2(2010);
cout<<"contatore: "<<date::leggic();
getch();
return 0;
cosa sbaglio?
#include <iostream>
#include <stdio.h>
#include <conio.h>
using namespace std;
class date{
private:
int year;
public:
static int contatore;
date(int year_){
setyear(year_);
}
void setyear(int year_){
year=year_;
}
static int leggic(){
return contatore;
}
static int azzerac(){
contatore=0;
}
};
int date::contatore;
int main(){
date::azzerac();
date d1(2000);
date d2(2010);
cout<<"contatore: "<<date::leggic();
getch();
return 0;
I membri statici vanno sempre creati fuori dalla definizione di una classe. Sono condivisi da tutti gli oggetti di quella classe quindi devono "vivere" in una translation unit (cioč in un .cpp), ma in uno solo, non ne viene creato uno per ogni istanza della classe.
Quindi ricordati che se vorrai mettere la tua classe date in un .hpp a parte, il membro statico va messo per forza nel relativo .cpp.
vBulletin® v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.