Bonjour,
Je vais commencer par vous exposer mon problème.
J'ai deux classes : PipingModel et Point. Je souhaite remplir une map :
map<int, set<pair<Point,Point>>> mapPipePoint;
Où le "int" est l'id du pipe associé aux deux Points.
Pour cela je dispose d'un vector de la forme vector<tuple<idPipe, idPoint1, idPoint2>> :
vector<tuple<int,int,int>> vectorIdPipePoint;
Ce vector me donne donc les id des deux points associés à chaque pipe.
Or je dispose aussi des vectors suivants dans ma classe PipingModel :
1 2 3
| vector<double> coordXVect;
vector<double> coordYVect;
vector<double> coordZVect; |
qui me donne les coordonnées X, Y, Z pour un point : par exemple, si je veux les coordonnées de mon premier point je fais coordXVect[0] pour x, etc..
Le constructeur de ma classe Point :
1 2 3
| MyPoint::MyPoint(int id, int x, int y, int z) : idPoint(id), coordX(x), coordY(y), coordZ(z)
{
} |
Pour remplir ma map (avec des Objets Point du coup), j'ai procéder de la manière suivante :
1 2 3 4 5 6 7 8 9
| void PipingModel::FillMapPipePoint() // Problème avec cette méthode
{
int j=0;
for (auto t = vectorIdPipePoint.begin(); t != vectorIdPipePoint.end(); ++t)
{
mapPipePoint[get<0>(*t)].insert(make_pair(Point(get<1>(*t), coordXVect[j], coordYVect[j], coordZVect[j]), Point(get<2>(*t), coordXVect[j+1], coordYVect[j+1], coordZVect[j+1])));
j++;
}
} |
L'erreur que le programme me sort :
error C2784: 'bool std::operator <(const std::move_iterator<_RanIt> &,const std::move_iterator<_RanIt2> &)'*: impossible de déduire l'argument modèle pour 'const std::move_iterator<_RanIt> &' à partir de 'const Point'
J'ai fais pas mal de recherche pour résoudre mon problème, j'ai essayer de mettre :
bool operator< (const MyPoint& left, const MyPoint& right) {};
Mais mon problème persiste et je ne vois pas à quel endroit les Point sont comparés à l'aide de "<".
Je ne souhaite pas que l'on me donne une réponse toute faite mais que l'on m'explique si possible mon erreur.
Merci d'avance pour vos réponses
Partager