Bonjour à tous,
pour vous expliquer mon problème :
Voici une classe mère dont j'ai définis un super constructeur ci dessous :
Ce super constructeur me sert à initialiser toutes mes variables.
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 Scheme::Scheme(int size, double debut, double fin, double Delta_X, double temps, double bc1, double bc2, double U) { numberP = size; DeltaX = Delta_X; time = temps; BC1 = bc1; BC2 = bc2; u = U; std::vector <double> x(size); std::vector <double> fn(size); std::vector <double> fan(size); std::vector <double> fnplusone(size); x[0] = debut; x[size - 1] = fin; Delta_T = Delta_X*0.93; A = Delta_T / Delta_X; for (i = 1; i < size - 1; i++) { x[i] = x[0] + (i*Delta_X); } double t; }
J'ai une classe "fille" heritant de cette classe mère, et je souhaite réutiliser les variables définies ci dessus dans des méthodes de cette classe "fille".
Classe fille :
Cependant, les valeurs initialisées dans le super constructeur deviennent 0 quand j'instancie ma classe fille.
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
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81 std::vector <double> MethodsNum::UpwindScheme(double scheme) { Calculateur C; for (i = 0; i < numberP - 1; i++) { x[i] = x[0] + (i*DeltaX); } if (scheme == 1) { for (t = 0; t <= time; t += Delta_T) { if (t == 0) { for (i = 0; i<numberP; i++) { fn[i] = 0.5*(C.sign(x[i]) + 1); } } //Boundary condition fn[0] = BC1; fn[numberP - 1] = BC2; fnplusone[0] = fn[0]; fnplusone[numberP - 1] = fn[numberP - 1]; for (i = 1; i < numberP - 1; i++) { fnplusone[i] = (-u*(Delta_T / DeltaX)*(fn[i] - fn[i - 1])) + fn[i]; } for (i = 1; i < numberP; i++) { fn[i] = fnplusone[i]; } } return fnplusone; } else if (scheme == 2) { for (t = 0; t <= time; t += Delta_T) { if (t == 0) { for (i = 0; i<numberP; i++) { fn[i] = 0.5*(C.sign(x[i]) + 1); } } //Boundary condition fn[0] = BC1; fn[numberP - 1] = BC2; fnplusone[0] = fn[0]; fnplusone[numberP - 1] = fn[numberP - 1]; for (i = 1; i < numberP - 1; i++) { fnplusone[i] = (((1 / (1 + u*A))*fn[i])) + (1 / (1+(DeltaX / (u*Delta_T)))*fnplusone[i - 1]); } for (i = 1; i < numberP; i++) { fn[i] = fnplusone[i]; } } return fnplusone; } }
Est-il possible de garder ses valeurs en mémoire sans les passer en argument de ma méthode issue de la classe fille ?
Car si ce n'est pas possible, qu'elle est l'utilité de la classe mère ?
Merci d'avance,
cordialement
Partager