2011-02-11 15 views
1

クラス階層を持つboostのマルチインデックスコンテナを使用したいと思います。これは可能ですか?DoBoostマルチインデックスコンテナは、継承されたクラスメンバで動作しますか?

私がしようとした場合:

#include <boost/multi_index_container.hpp> 
#include <boost/multi_index/ordered_index.hpp> 
#include <boost/multi_index/identity.hpp> 
#include <boost/multi_index/member.hpp> 

using namespace ::boost; 
using namespace ::boost::multi_index; 

class A{ 
    public: 
     int m; 
     A(int p = 0){m = p;}; 
}; 

class B: public A{ 
    public: 
     int n; 
     B(int p = 0, int q = 0): A(p){ n = q;}; 
}; 


typedef multi_index_container< 
    B, 
    indexed_by< 
     ordered_unique<identity<B> >, 
     ordered_non_unique<member<B, int, &B::m> > 
    > 
> mindex; 

int main(void){ 
    return 0; 
} 

私は、次のエラーを取得:私は、ライン25を変更した場合

multiindextest.cpp:25: error: could not convert template argument ‘&A::m’ to ‘int B::*’ 
multiindextest.cpp:25: error: template argument 1 is invalid 
multiindextest.cpp:26: error: template argument 2 is invalid 
multiindextest.cpp:27: error: template argument 2 is invalid 
multiindextest.cpp:27: error: invalid type in declaration before ‘;’ token 

ordered_non_unique<member<B, int, &B::n> > 

それは罰金コンパイルします。どんな助けでも大歓迎です。ありがとう。

答えて

2

これはあなたが探しているものであれば、私は、かなりわからないんだけど、あなたはライン25に変更することができます。

ordered_non_unique<member<A, int, &A::m> > 

これはGCC 4.4でコンパイルされています。

よろしくラース。

+0

ありがとうございました! – Nixuz

関連する問題