Zeph Le 29/02/2008 à 18:02 Bah c'est le comportement normal d'une variable locale statique de conserver sa valeur entre deux appels, tu attends quoi comme réponse ? ^^

All right. Keep doing whatever it is you think you're doing.
------------------------------------------
Besoin d'aide sur le site ? Essayez
par ici :)
Pen^2 Le 29/02/2008 à 18:03 Ben, pour une méthode, je pensais que c'était local à l'instance de la classe.
En gros je trouve étrange (pas naturel) que le static d'une variable de méthode remonte au niveau global.
Pen^2 Le 29/02/2008 à 18:50 Oui et non, y'avait pas de méthode en C, y'avait que des fonctions. C'est quand même pas pareil :/
Moi je suis de l'avis de Pen^2.
Sinon, il y a moyen d'obtenir le comportement recherché ?

« Quand le dernier arbre sera abattu, la dernière rivière empoisonnée, le dernier poisson capturé, alors vous découvrirez que l'argent ne se mange pas
. »
C'est quoi la différence entre struct et class ? Pourquoi il n'y a pas de new() après la déclaration a1 (et a2) ?

Un site complet sur lequel vous trouverez des programmes et des jeux pour votre calculatrice TI 89 / Titanium / 92+ / Voyage 200 :
www.ti-fr.com.
Quelques idées personnelles
ici.
a1 et a2 sont déclarées sur la pile. new() ne te sert que pour l'allocation dynamique.
A *a1 = new A(); par exemple ^^ (mais faut pas oublier le delete qui va avec ...)
Sinon pour les struct et les class a priori c'est une question de visibilité par défaut des membres (struct/public vs class/private).
moi c'est le seul vrai truc honnête qui me fait détester le c++:
le mix entre les pointeurs vers des classes, et les objets classes déclarés sur la pile. Je trouve ça vraiment très caca.
Sans lancer de comparaison, je préfère le java ou tous les objets sont des références, au moins ça a le mérite d'être clair.
Zeph Le 02/03/2008 à 14:32 Ça me semble pourtant bien plus sain qu'un langage comme Java justement, où on a d'une part des types primitifs (int, char & co) qui sont passés par valeur et placés sur la pile, et d'une autre des objets qui ne fonctionnent pas du tout pareil. Quelle est la justification de cette séparation, et pourquoi on ne peut pas choisir de faire autrement ? Même si ça n'est pas parfait en C++, ça me semble quand même bien plus cohérent de ne pas forcer l'amalgame scalaire/objet et valeur/pointeur (le mieux étant à mon avis les langages pour lesquels il n'y a réellement aucune différence entre les types de base du langage et ceux qu'un utilisateur peut déclarer lui-même).

All right. Keep doing whatever it is you think you're doing.
------------------------------------------
Besoin d'aide sur le site ? Essayez
par ici :)
C'est une des raisons pour lesquelles le Java rame, ça coûte un temps énorme d'allouer n'importe quel petit objet sur le heap et de s'occuper de tous ces objets minuscules dans la GC. Et les objets sur la pile permettent aussi de réaliser facilement le modèle RAII, où les désallocations sont faites automatiquement dans le destructeur, qui est appelé automatiquement quand l'objet sort du scope, donc on ne risque pas de se tromper et donc on n'a pas besoin de GC.
aze Le 03/03/2008 à 15:32 ce que tu veux c'est pas tout bêtement une variable membre ? (mis à part qu'elle serait visible pour les autres méthodes)
et je ne vois pas du tout ce que tu trouves de pas cohérent à ce fonctionnement. par rapport à une variable membre statique ya juste sa portée qui change puisqu'elle est déclarée dans le scope de la fonction et pas de la classe.
Et perso, les variables statiques dans des fonctions, à part pour du debug je trouve ça assez sale. ou quand la fonction doit retourner à chaque fois un nom unique
<hs>pour avoir des caches, j'ai fait des trucs super sales une fois en PHP, et en fait ça ressemblait un peu à ça.
J'avais une classe "cache" avec une map <id,objet> qui était stockée dans une variable statique de chaque classe a cacher. et le get de la classe "cachée" faisait un self::$cache->lookup(id) du cache avant d'aller chercher la vraie donnée.
(c'était pour des objets stockés dans une base, en fait)
</hs>
pen^2, si tu déclarais tout simplement une variable globale ?

Un site complet sur lequel vous trouverez des programmes et des jeux pour votre calculatrice TI 89 / Titanium / 92+ / Voyage 200 :
www.ti-fr.com.
Quelques idées personnelles
ici.
J'avoue avoir du mal à comprendre pourquoi tu ne mets pas ta variable en membre privé de ta structure (comme l'exemple de KK).