|
|
|
|
Salut,
j'ai ecris ce petit programme rien que pour tester un comteur d'instance
-------------------------------------------------------------------------------------------------
#include<iostream.h>
#include<conio.h>
class Ob
{
int c;
static int compteur;
public:
Ob();
void afficher();
void modiffier(int);
void nbOB();
int affichnbOb();
~Ob();
};
Ob :: Ob(){
c=0;
compteur++;
}
void Ob :: afficher() {
cout <<"\n la valeeur est :"<<c;
}
void Ob :: modiffier(int v)
{
this->c=v;
}
int Ob :: affichnbOb()
{
return compteur();
}
Ob :: ~Ob()
{
compteur--;
}
void main()
{
Ob p1;
p1.modiffier(8);
p1.afficher();
cout <<" le nombres d'objets jusqu'a maintenet est :"<<p2.;
getch();
}
----------------------------------------------------------------------------------------
mes j'ai toujours cette erreur
:
undefined symbol ob::comteur is module TEST.CPP
qulqu'un peut m'aidez ?
Configuration: Windows XP Firefox 2.0.0.17
Salut,
|
undefined symbol ob::comteur is module TEST.CPP
|
Voici le corrigé :
#include <iostream>
// et non <iostream.h> qui est obsolète
// pas besoin de <conio.h> qui n'est pas standard
class A{
protected:
static unsigned compteur;
public:
A(){
++compteur;
}
~A(){
--compteur;
}
static inline unsigned get_compteur(){
return compteur;
}
};
unsigned A::compteur = 0;
int main(){
std::cout << "1) " << A::get_compteur() << std::endl;
{
A a1;
std::cout << "2) " << A::get_compteur() << std::endl;
A a2,a3;
std::cout << "3) " << A::get_compteur() << std::endl;
}
std::cout << "4) " << A::get_compteur() << std::endl;
return 0;
}
ce qui donne : 1) 0 2) 1 3) 3 4) 0Bonne chance |