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> >
それは罰金コンパイルします。どんな助けでも大歓迎です。ありがとう。
ありがとうございました! – Nixuz