子类成员的multi_index索引成员

时间:2014-04-10 10:44:48

标签: boost multi-index

我在将子类成员定义为索引成员时遇到问题 这可能吗 对于以下代码

namespace bmi = boost::multi_index;
namespace bip = boost::interprocess;

struct UsersKey {
    uint64_t IMSI;
};

struct UsersVal {
    uint64_t IMSI;
};

struct HashEntry{
    UsersKey key;
    UsersVal val;
}

typedef bmi::hashed_unique<bmi::tag<struct IMSI_tag>,  bmi::member<HashEntry, uint64_t , &HashEntry::UsersKey::IMSI>,  boost::hash<uint64_t>, std::equal_to<uint64_t> > hashed_by_IMSI;


typedef 
  bmi::indexed_by<  hashed_by_IMSI > UsersKey_hash_indices;

 typedef boost::multi_index::multi_index_container<
      HashEntry,
      UsersKey_hash_indices>
    > GlobalHash;

我收到以下错误

error: no member named 'UsersKey' in 'HashEntry'; did you mean simply 'UsersKey'?

以下是在线代码http://coliru.stacked-crooked.com/a/d736557edf615fc2

的链接

1 个答案:

答案 0 :(得分:1)

指向成员函数语法的C ++指针不允许在此处指定成员内的成员。一个简单的选择是使用提供的global_fun密钥提取器,如http://coliru.stacked-crooked.com/a/c57625bfb1d5acfa

所示

最佳,

相关问题