Bonjour à tous,


Je suis en train de modéliser un trajet. On me donne les étapes (lati/longi/ordre).

J'ai donc fait :
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
 
class CTrackStep
{
private:
    TDoubleProperty* pLati;
    TDoubleProperty* pLongi;
};
 
class CTrack
{
private:
   struct SOrderedStep
   {
      SOrderedStep(TIntProperty* iOrder, CTrackStep* pStep)
         : m_iOrder(*iOrder), m_pStep(pStep) {}
      TIntProperty* m_iOrder;
      CTrackStep* m_pStep;
   };
   struct BY_ORDER { /* indexation par les ordres */ };
 
   typedef boost::multi_index_container<
      SOrderedStep,
      boost::multi_index::indexed_by<
         boost::multi_index::ordered_unique<
            boost::multi_index::tag<BY_ORDER>,
            boost::multi_index::member<SOrderedStep, TIntProperty&,
            &SOrderedStep::m_iOrder
         >
      >
   > TOrderedStepContainer;
};
Comme vous le voyez, mes données sont stockées dans des "Property", ce qui me permet de brancher des écouteurs sur l'ordre des étapes ou bien les positions de celle-ci. C'est pourquoi je souhaite utiliser des pointeurs ou références.

Le soucis c'est que si je dois trier par des "TIntProperty&", ça ne fonctionne pas car on ne peut pas créer de pointeur de membre vers une référence, et si je mets "TIntProperty*", est-ce qu'il ne va pas trier non pas par la valeur de TIntProperty mais par la valeur du pointeur ?

Est-ce que ça ne serait pas un mauvaix choix que d'utiliser le multi_index pour gérer ceci ?

Merci,

Aurélien