2011-04-10 87 views
3

我想排序我的對象boost::multi_map引用一些索引。但我存儲的不是純粹的對象,而是包含到boost::shared_ptr中。這裏是代碼:Multimap和shared_ptr

typedef boost::multi_index_container<boost::shared_ptr<Object>, 
      boost::multi_index::indexed_by< 
       boost::multi_index:: ordered_non_unique< 
        boost::multi_index::mem_fun<boost::shared_ptr<Object>, int, &boost::shared_ptr<Object>::getIndex> 
       > 
      > 
     > ObjectWrapperSet; 

但它失敗的點:&boost::shared_ptr<Object>::getIndex。這在邏輯上,該類型沒有getIndex函數。但是如何用這種方式來引用那個函數呢?

我用簡單的Object::getIndex試了一下:

could not convert template argument ‘&Object::getIndex’ to ‘int (boost::shared_ptr<Object>::*)()’ 

回答

2

變化

boost::multi_index::mem_fun<boost::shared_ptr<Object>, int, &boost::shared_ptr<Object>::getIndex> 

boost::multi_index::mem_fun<Object, int, &Object::getIndex> 

按照documentation它應該工作。

+0

請看我的更新。 – Ockonal 2011-04-10 08:30:40

+0

@Ockonal:請看我的更新。 – ybungalobill 2011-04-10 08:31:48

+0

謝謝,我從文檔中錯過了。 – Ockonal 2011-04-10 08:33:31