2014-08-29 56 views
0

我正在嘗試使用Boost multi_index來解決問題。 如果我有2層結構如下:與Boost multi_index一起使用子級結構索引

struct MyStruct1 
{ 
    int x; 
    int y; 
}; 

struct MyStruct2 
{ 
    int a; 
    MyStruct1 b; 
}; 

我如何定義使用MyStruct2 :: b.x的指數? 這可能嗎?

試圖像:

struct xIndex{}; 

typedef multi_index_container< 
    MyStruct2, 
    indexed_by< 
     ordered_unique< 
      tag<xIndex>, 
      member<MyStruct2, int, &MyStruct2::a::x> 
     > 
    > 
> MyContainer; 

但是,這並不工作。

感謝您的任何信息/建議。

回答

0

有幾種方法可以做到這一點,但所有這些方法都要求您編寫一些樣板代碼。最簡單的是提供一個user-defined key extractor

struct MyStruct2XExtractor 
{ 
    typedef int result_type; 

    int operator()(const MyStruct2& m)const 
    { 
    return m.b.x; 
    } 
}; 

... 

typedef multi_index_container< 
    MyStruct2, 
    indexed_by< 
     ordered_unique< 
      tag<xIndex>, 
      MyStruct2XExtractor 
     > 
    > 
> MyContainer; 
+0

謝謝!那是我需要的 – psunittany 2014-09-02 15:51:35

相關問題