Bonjour, je suis débutant en C++ et je suis confronté à un petit problème de création d'objet.
J'utilise un logiciel d'optimisation couplé à une librairie dynamique (win32).
La partie qui me pose problème est la suivante:
Voilà, j'explique. La fonction Eval est appelé a chaque expérience et 1 fois pour chaque output... Le problème c'est que je veut lancer mon algorhitme en mode initialisation seulement à la première expérience (runExperiment()), beaucoup de variables sont calculée et mise en mémoire.Ces variables calculées à l'initialisation doivent être disponible pour les autres expérience, c'est à dire pour les autres appel de la fonction Eval. Seulement, lors de l'appel de la fonction Eval, la ligne : Maclasse exp; semble effacer tous ce qui à été fait avant. Je voudrait creer l'objet exp une seule fois (la première) tout en appelant (exp.setvariable par exemple) cet objet dans la fonction Eval.
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 A=0 double Eval(int uid, int index, double output, double* input) { Maclasse exp; if (index==0) { if (A==0) { initsimula(&exp); exp.setvariable("varexp", "INIT"); exp.runExperiment(); } if (A!=0) { exp.setvariable("varExp","SIMU"); exp.setVariable("x1", 12.0); exp.runExperiment(); } A=A+1; } double y=exp.getvariable("y1"); return y; }
J'ai essayé de creer l'objet exp aprés mon if (A==0), seulment je pouvait pas compiler car mon exp n'était pas disponnible aprés le if A!=0.
Auriez vous une idée pour créer mon objet exp une seule fois et qu'il soit disponnible dans la fonction Eval. Sachant que je suis obligé de l'appeler exp (qui est déjà défini dans math.h ...)
D'avance merci et désolé si je n'est pas été clair et surtout si j'ai employé les mauvais termes
Partager