$include_dir="/home/hyper-archives/boost-users/include"; include("$include_dir/msg-header.inc") ?>
From: JOAQUIN LOPEZ MU?Z (joaquin_at_[hidden])
Date: 2007-06-27 11:39:04
----- Mensaje original -----
De: hongleij_at_[hidden]
Fecha: Miércoles, Junio 27, 2007 10:16 am
Asunto: [Boost-users]  [multi-index] how to use in herit member as 
index
Para: boost-users_at_[hidden]
>   //boost
> #include <boost/multi_index_container.hpp>
> #include <boost/multi_index/hashed_index.hpp>
> #include <boost/multi_index/member.hpp>
> using namespace ::boost;
> using namespace ::boost::multi_index;
> 
> #include <string>
> 
> struct Peer
> {
>    std::string userid;
> };
> struct CPeer:public Peer
> {
>    int index;
> };
> struct userid{};
> 
> typedef multi_index_container<
>   CPeer,
>   indexed_by<
>      
> hashed_unique<tag<userid>,member<CPeer,std::string,&CPeer::userid> >
>   >
> > CPeersType;
> 
> //how could i use userid as an index in  CPeer ,not in Peer,
Hello,
If you're using Boost 1.34, then you can simply use
  hashed_unique<
      tag<userid>,
      member<Peer,std::string,&Peer::userid> >
(note we're writing Peer here rather than CPeer.) If you can't
afford upgrading to Boost 1.34, you must use a custom key
extractor:
  struct UseridExtractor
  {
      typedef std::string result_type;
  
      const std::string& operator()(const CPeer& cp)const
      {
          return cp.userid;
      }
  };
  typedef multi_index_container<
     CPeer,
     indexed_by<
        hashed_unique<tag<userid>,UseridExtractor>
     >
  > CPeersType;
(more on custom key extractors at http://tinyurl.com/39shzv ).
Thank you for using Boost.MultiIndex,
Joaquín M López Muñoz
Telefónica, Investigación y Desarrollo