Bonjour,
Je suis entrains de programmer simulateur simplifier d'interaction entre individus.
J'ai donc un objet individus et un objet population.
C'est l'objet population qui va traiter des interactions entre individus.
Voici la partie concernée, me semble t il, de mon code :
population.hpopulation.cpp - centrer au niveau de l'erreur
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 #ifndef Population_H #define Population_H #include "individus.h" #include <cmath> class Population { public: //constructeur .. //destructeur .. //méthodes membres ... private: ... ... //structure de la population class noyeauxInteraction { public: //constructeurs noyeauxInteraction(){individus=Individus(); voisins=QVector<Individus*>();} noyeauxInteraction(noyeauxInteraction const &ni){this->individus=Individus(ni.individus); for (int i=0; i<ni.voisins.size();i++) this->voisins.append(ni.voisins.at(i));} noyeauxInteraction(Individus ind, Individus* vois=NULL){individus=Individus(ind); if (vois!=NULL){voisins.append(vois);}} //attributs Individus individus; QVector<Individus*> voisins; }; //attributs QVector<noyeauxInteraction> population; //caractéristiques de l'environnement ... //caractéristiques des individus ... }; #endif // Population_H
J'ai une erreur de segmentation au niveau de cette ligne là :
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 void Population::calculVoisin(int indice) { qDebug("liste des voisins vidée..."); for (int i=0; i<population.at(indice).voisins.size();i++){ data[indice].voisins.remove(i);} qDebug()<<"nombre de voisins :"<<population.at(indice).voisins.size(); qDebug("calcul des voisins en cour..."); for (int i=0; i<population.size(); i++) { if (i!=indice) { if ((population.at(i).individus.position().x - population.at(indice).individus.position().x + population.at(i).individus.position().y - population.at(indice).individus.position().y) < population.at(indice).individus.getZI()) { //population.at(indice).addVoisin(population.at(i)); data[indice].voisins.resize(population.at(indice).voisins.size()); data[indice].voisins.insert(data[indice].voisins.size()-1,&data[i].individus); } } } qDebug()<<"calcul des voisins finis. Il y a "<<population.at(indice).voisins.size()<<"voisins"; }
Code : Sélectionner tout - Visualiser dans une fenêtre à part data[indice].voisins.resize(population.at(indice).voisins.size());
Pourriez vous m'aider s'il vous plait ?
Partager