boost::multi_index : Indexer un membre pointeur ou référence
Bonjour à tous,
Je suis en train de modéliser un trajet. On me donne les étapes (lati/longi/ordre).
J'ai donc fait :
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
|
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