2011-02-11 59 views
1

我想使用boost的多索引容器与类层次结构。这可能吗?Do Boost MultiIndex容器与继承类成员一起工作吗?

如果我尝试:

#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; 
} 

我收到以下错误:

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 

如果我改变路线25:

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

它编译罚款。任何帮助将非常感激。谢谢。

回答

2

我不太清楚,如果这是你在找什么,但25行到你可以改变:

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

这是对GCC 4.4编译。

关心拉尔斯。

+0

非常感谢! – Nixuz 2011-02-11 17:26:27