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.h
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
population.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
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";
}
J'ai une erreur de segmentation au niveau de cette ligne là :
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 ?