A voir également:
- Attribut partageable par les méthodes
- Dans le document, léa a utilisé 2 méthodes différentes pour centrer le nom des continents. lesquels sont centrés correctement ? ✓ - Forum Javascript
- Methodes java - Astuces et Solutions
- Attribut changer - Télécharger - Divers Utilitaires
- Plusieurs connexions à un serveur ou à une ressource partagée par le même utilisateur - Forum Windows
- Aucun attribut manifest principal ✓ - Forum Java
2 réponses
Marco la baraque
Messages postés
996
Date d'inscription
vendredi 9 mai 2008
Statut
Contributeur
Dernière intervention
5 novembre 2009
326
24 janv. 2009 à 01:51
24 janv. 2009 à 01:51
Bonsoir,
Quel langage utilises-tu ?
Normalement en utilisant un attribut normal, il est visible par toutes les méthodes de la classe, appartient à l'instance courante (donc si tu crées une seconde instance, son attribut aura une autre valeur).
Cordialement,
Quel langage utilises-tu ?
Normalement en utilisant un attribut normal, il est visible par toutes les méthodes de la classe, appartient à l'instance courante (donc si tu crées une seconde instance, son attribut aura une autre valeur).
Cordialement,
Marco la baraque
Messages postés
996
Date d'inscription
vendredi 9 mai 2008
Statut
Contributeur
Dernière intervention
5 novembre 2009
326
24 janv. 2009 à 02:59
24 janv. 2009 à 02:59
Tu dois avoir fait une erreur, je ne sais pas où... Regarde un peu le code suivant : l'attribut est bien relatif à l'instance :
Dis-moi donc la différence entre ton code et le mien, qu'on découvre d'où vient le problème.
Cordialement,
Fichier Compteur.cpp :
class Compteur {
int valeur;
public:
Compteur(){}
Compteur(int valeur):valeur(valeur){}
~Compteur(){}
void incremente() {valeur++;}
int getValeur() {return valeur;}
};
Fichier main.cpp :
#include <cstdlib>
#include <iostream>
#include "Compteur.cpp"
using namespace std;
int main(int argc, char *argv[])
{
Compteur *c1 = new Compteur(2);
c1->incremente(); //l'attribut valeur de c1 vaut 3
std::cout<<c1->getValeur()<<std::endl;
Compteur *c2 = new Compteur(5);
c2->incremente(); //l'attribut valeur de c2 vaut 6
std::cout<<c2->getValeur()<<std::endl;
c1->incremente(); //l'attribut valeur de c1 vaut 4
std::cout<<c1->getValeur()<<std::endl;
delete c1;
delete c2;
system("PAUSE");
return EXIT_SUCCESS;
}
Dis-moi donc la différence entre ton code et le mien, qu'on découvre d'où vient le problème.
Cordialement,
bonjour ,
moi j'ai presque ça:
dans Compteur.h:
class Compteur : public A{
int val;
}
Dans compteur.cc j'ai:
int nombre;
compteur::compteur(int val):A
{}
void init()
{nombre=0;}
void incrementer()
{nombre ++}
et puis il y a d'autres classes qui vont appeler Compteur suivant des valeurs différentes de val.
merci de ton aide.
moi j'ai presque ça:
dans Compteur.h:
class Compteur : public A{
int val;
}
Dans compteur.cc j'ai:
int nombre;
compteur::compteur(int val):A
{}
void init()
{nombre=0;}
void incrementer()
{nombre ++}
et puis il y a d'autres classes qui vont appeler Compteur suivant des valeurs différentes de val.
merci de ton aide.
24 janv. 2009 à 01:54
j'utilise c++ et lorsque j'utilise un attribut normal sa valeur reste partageable par toutes les instances .
24 janv. 2009 à 01:59
En principe ton attribut n'est partagé entre toutes tes classes que s'il est static, c'est pour ça que j'aimerais voir ce qui cloche.
Cordialement,
24 janv. 2009 à 02:11
Lors de l'exécution, il va y avoir plusieurs entiers, chacun d'eux va etre le paramètre de ma classe ,qui va etre donc appelée en parallèle par ces différents entiers.
Ce qui arrive est que par exemple , lors du premier appel de la classe mon attribut sort avec la valeur 2 par exemple, pour le second appel de cette classe par un 2ème entier mon attribut s'incrémente et devient 3, or je veux qu'il soit indépendant de la valeur qu'il a eu avec le premier entier.