Bonjour à tous,

pour vous expliquer mon problème :
Voici une classe mère dont j'ai définis un super constructeur ci dessous :

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;
}
Ce super constructeur me sert à initialiser toutes mes variables.

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 :
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;
	}
 
 
}
Cependant, les valeurs initialisées dans le super constructeur deviennent 0 quand j'instancie ma classe fille.

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