bonjour,
j'ai un soucis d'ordre pratique:
j'ai ceci :
class A {
...
};
class B : public A {
};
comment faire si je veux declarer une instance de A et plusieurs instances de B qui modifient tous les attibuts de la meme mere ??
merci
bonjour,
j'ai un soucis d'ordre pratique:
j'ai ceci :
class A {
...
};
class B : public A {
};
comment faire si je veux declarer une instance de A et plusieurs instances de B qui modifient tous les attibuts de la meme mere ??
merci
veuillez donner plus de details sur ce que vous voulez exactement ??
bah en fait chaque objet posséde ses propres attributs indépendament de tout les autres objets.
ici les valeurs a.a et b.a ne sont pas "commune" et sont propres à l'objet.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 class A { int a; ... } class B : public A { ... } B a; B b;
Si tu veux que tous les objets aient des attributs comment avec meme valeur il faut déclarer l'attribut static!
Ainsi l'attribut a est commun a tous les objets toute modification de la valeur de a est reporter dans tous les autres objets.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 class A { static int a; ... } class B : public A { ... } B a; B b;
Par exemple:
a.a = 5;
alors b.a vaut 5 également. Et si tu modifie la valeur de a dans l'objet b, la valeur de a dans l'objet a est également modifier.
Console :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26 class A { public: int i; }; class B : public A { }; int main() { A a; B b1; B b2; ... ... a.i = 1; cout << a.i << endl; b1.i = 2; cout << a.i << endl; b2.i = 3; cout << a.i << endl; }
comment faire si je veux declarer une instance de A et plusieurs instances de B qui modifient tous les attibuts de la meme mere ??>1
>2
>3
en déclarant l'attribut en question static
tu dois alors déclarer les champs comme des champs de la classe
cela se fait en le déclarant static
merci .. j'étais en rain de réécrire la question quand tu m'as répondu :-)
merci beaucoup
Partager