Compteur d'objets(c++)
Résolu/Fermé
A voir également:
- Compteur en c
- Compteur communicant - Guide
- Compteur de contractions - Télécharger - Santé & Bien-être
- Comment ralentir un compteur linky - Guide
- Compteur électrique - Guide
- Compteur kilométrique qui clignote fiat - Forum Autoradio
4 réponses
mamiemando
Messages postés
33134
Date d'inscription
jeudi 12 mai 2005
Statut
Modérateur
Dernière intervention
31 mai 2024
7 756
16 mars 2009 à 20:52
16 mars 2009 à 20:52
Voici le corrigé :
ce qui donne :
#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
Salut,
Il faut que tu initialises ta variable static avant de faire des manipulations.
Met cette ligne dans ton implémentation de la classe.
int Ob::compteur=0;
Tu peux placer cette ligne n'importe où mais je te conseil de le mettre près de ton implémentation du constructeur de ta classe Ob.
bonne journée
Il faut que tu initialises ta variable static avant de faire des manipulations.
Met cette ligne dans ton implémentation de la classe.
int Ob::compteur=0;
Tu peux placer cette ligne n'importe où mais je te conseil de le mettre près de ton implémentation du constructeur de ta classe Ob.
bonne journée
undefined symbol ob::comteur is module TEST.CPP
Ah, ah, ah, sur les forums on peut faire toutes les fautes de français que l'on veut même au risque de ne pas se faire comprendre... mais dans un programme, le compilateur le refusera... alors si l'on a choisi d'écrire compteur il ne faut pas ensuite lui demander comteur !!! ;-)
Nota: par défaut, les variables statiques sont initialisées à zéro.
Ah, ah, ah, sur les forums on peut faire toutes les fautes de français que l'on veut même au risque de ne pas se faire comprendre... mais dans un programme, le compilateur le refusera... alors si l'on a choisi d'écrire compteur il ne faut pas ensuite lui demander comteur !!! ;-)
Nota: par défaut, les variables statiques sont initialisées à zéro.
mamiemando
Messages postés
33134
Date d'inscription
jeudi 12 mai 2005
Statut
Modérateur
Dernière intervention
31 mai 2024
7 756
>
loupius
24 mars 2009 à 01:29
24 mars 2009 à 01:29
Je veux bien voir ta norme...
Bonne chance
(mando@aldur) (~) $ gcc --version gcc (Debian 4.3.2-1.1) 4.3.2 Copyright (C) 2008 Free Software Foundation, Inc. This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. (mando@aldur) (~) $ cat plop.c #include <stdio.h> int main(){ int i; printf("%d\n",i); return 0; } (mando@aldur) (~) $ gcc plop.c (mando@aldur) (~) $ ./a.out -1208765872En tout cas avec gcc la variable n'est pas intialisée à 0.
Bonne chance
fiddy
Messages postés
11069
Date d'inscription
samedi 5 mai 2007
Statut
Contributeur
Dernière intervention
23 avril 2022
1 836
>
mamiemando
Messages postés
33134
Date d'inscription
jeudi 12 mai 2005
Statut
Modérateur
Dernière intervention
31 mai 2024
24 mars 2009 à 01:43
24 mars 2009 à 01:43
Salut,
Loupius a raison.
En C/C++, les variables persistantes (déclarées globales et/ou statiques ) sont initialisées à leur valeur nulle.
Il n'y a qu'à lire la norme ;-)).
Dans ton exemple, tu utilises une variable locale classique. Tricherie ;-)).
Teste avec static devant pour t'en convaincre ou mets là en global.
Cdlt
Loupius a raison.
En C/C++, les variables persistantes (déclarées globales et/ou statiques ) sont initialisées à leur valeur nulle.
Il n'y a qu'à lire la norme ;-)).
Dans ton exemple, tu utilises une variable locale classique. Tricherie ;-)).
Teste avec static devant pour t'en convaincre ou mets là en global.
Cdlt
mamiemando
Messages postés
33134
Date d'inscription
jeudi 12 mai 2005
Statut
Modérateur
Dernière intervention
31 mai 2024
7 756
>
fiddy
Messages postés
11069
Date d'inscription
samedi 5 mai 2007
Statut
Contributeur
Dernière intervention
23 avril 2022
24 mars 2009 à 01:59
24 mars 2009 à 01:59
Effectivement... Bon ceci dit, ça ne mange pas de pain de l'initialiser.