Bonsoir,

J'ai pas mal de difficultés à comprendre les pointeurs... et en plus, lorsqu'ils sont utilisés dans les classes. J'ai un exercice où je dois créer une classe mère "Simple" et sa fille "Simple_F" comme ceci:
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 Simple
{
//classe pour définir une fonction de base
public:
        Simple(){}; //constructeur par défaut
	virtual double f(double x)=0; //cette méthode est fournie et doit rester inchangée
};
 
class Simple_F : public Simple
{
private:
	double a, b, c, d;
public:
	Simple_F(double A, double B, double C, double D) //constructeur
	{
		a = A;
		b = B;
		c = C;
		d = D;
	}
 
	virtual double f(double x)
	{
		double f = a*(x*x*x) + b*(x*x) + c*x + d; //méthode pour définir la fonction qui nous intéresse dans un premier temps
	}
};

J'ai deux autres classes, une mère "RF", et sa fille "RF_b" ci-dessous (je dois écrire "RF_b", et ma question est en commentaire dans le code ci-dessous):
Ici j'aimerais initialiser la variable "fA" en faisant appel à la méthode "f" de la classe "Simple_F", et en remplaçant le paramètre x (argument de la fonction f) par la valeur de y et je ne suis pas certain de savoir comment faire avec le pointeur "Simple* F"

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
class RF
{
	virtual double findRoot(Simple* F, double y) = 0; //cette méthode est fournie et doit rester inchangée
};
 
class RF_B
{
private:
	double fA, fB, xp; //on définit quelques variables qui seront utilisées
        double fxp=100000000;
public:
	virtual double findRoot(Simple* F, double y) //c'est là que j'ai un peu de mal, on pointe sur F, qui, d'après le main, fait référence à un objet de type "Simple_F" 
	{
 
		while (fxp > 1e-10) //je commence mon algorithme
		{
 
                      //avant même d'aller plus loin et d'écrire l'algorithme, 
                     //ici j'aimerais initialiser la variable "fA" en faisant appel à la méthode "f" de la classe "Simple_F", et en remplaçant le paramètre x (argument de la fonction f) par la valeur de y
                    //je ne suis pas certain de savoir comment faire avec le pointeur "Simple* F"
		}
}

Le main est fourni et est comme ceci:
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
int main() {
	{
		double A = 1;
		double B = -6;
		double C = 11;
		double D = -6;
		Simple_F f(A, B, C, D); //Ici on créé un objet Simple_F appelé "f", les paramètres a b c d sont initialisés à A B C D via le constructeur de Simple_F
 
		RF_B bisec; // créer un objet RF_B appelé bisec
 
		ofstream myfile;
		myfile.open("Simple_FRoots.csv");
		myfile << "x,bisection,secant,f(bisection),f(secant)" << endl;
 
                for (double x = -1.0; x <= 6.0; x += 0.01) {
			//appel de la méthode findroot de l'objet bisec, argument 1 = adresse de f (objet de type Simple_F), argument 2 = x (qui vaut -1 d'abord)
			double r_bisec = bisec.findRoot(&f, x);
                }
         myfile.close();
         }
}

Merci à tous