Ordre d'execution dans le constructeur
Bonsoir,
Sur le même projet qu'ici.
Mais cette fois ce n'est pas au niveau individus/population que j'ai un problème mais sur l'objet simulation qui lui va gérer le cycle de vie au niveau population et la simulation, c'est là qu'il y aura les slots le jour où j'aurais enfin débogué le code.
Je disais donc que ma classe simulation possède une série d'attribut permettant d'initialiser comme il faut un objet population.
Mon problème c'est qu'à l'exécution ça passe directement à l'initialisation de l'objet population avant d'initialiser les paramètre.
Je me demandais si quelqu'un pouvait m'expliquer pourquoi et me proposer une solution.
simulation.h
Code:
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
| #ifndef SIMULATION_H
#define SIMULATION_H
#include <QSemaphore>
#include "population.h"
class simulation
{
public:
//constructeur
simulation(QSemaphore *s);
//méthodes membre
void initParam();
private:
QSemaphore *s1;
double b;
double d;
double zi;
double r;
int quantiteInit;
lib::Coordonnee dimension;
Population pop;
};
#endif // SIMULATION_H |
simulation.cpp
Code:
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
| #include "simulation.h"
simulation::simulation(QSemaphore *s)
{
this->s1=s;
qDebug("préparation de la simulation en cour...");
initParam();
qDebug("Création d'un objet population en cour...");
s1->acquire(1);
pop=Population(b,d,zi,r,quantiteInit,lib::Coordonnee(50,50));
qDebug("Création d'un objet population finit.");
qDebug("préparation de la simulation terminée.");
}
void simulation::initParam()
{
qDebug("initialisation des paramètres en cour...");
QFile file("../config");
QFile file2("../test");
QString str="";
if(file.open(QFile::ReadWrite))
{
QTextStream out(&file);
out>>str;
b=str.toDouble();
out>>str;
d=str.toDouble();
out>>str;
zi=str.toDouble();
out>>str;
r=str.toDouble();
out>>str;
quantiteInit=str.toInt();
qDebug()<<"quantite initiale lu dans le fichier : "<<quantiteInit;
out>>str;
dimension.y=str.toInt();
out>>str;
dimension.x=str.toInt();
//qDebug()<<""+str;
if(file2.open(QFile::ReadWrite))
{
QTextStream in(&file2);
in <<b<<"\n"<<d<<"\n"<<zi<<"\n"<<r<<"\n"<<quantiteInit<<"\n"<<"("<<dimension.x<<";"<<dimension.y<<")";
}
else {qDebug("erreur d'ouverture du fichier \"test\" en lecture/écriture");}
}
else {qDebug("erreur d'ouverture du fichier \"config\" en lecture/écriture");}
s1->release(1);
qDebug()<<"initialisation des paramètres finit."<<b<<"/"<<d<<"/"<<zi<<"/"<<r<<"/"<<quantiteInit<<"/"<<"("<<dimension.x<<";"<<dimension.y<<")";
} |