
tal boost ha escrito:
Hello,
I having difficulties getting multi_index working with shared_ptr
Example code:
typedef multi_index_container<
NodePtr,
indexed_by<
ordered_unique<
BOOST_MULTI_INDEX_CONST_MEM_FUN(NodePtr, handle, getHandle)
>
>
> node_set;
NodePtr is a typedef to boost::shared_ptr<NodeBase>
NodeBase is an interface for other NodeTypes objects the use it.
NodeBase ::getHandle() : handle (handle==size_t)
Using MSVC++ 6.0 compilers complains that getHandle is not a member of NodePtr
If I replace NodePtr with NodeBase class it compiles, with a price of giving away shared_ptr abilty.
Does anyone have any idea how to get both libs work?
OK. You should define your NodePtr_set as follows typedef multi_index_container< NodePtr, indexed_by< ordered_unique< BOOST_MULTI_INDEX_CONST_MEM_FUN(NodeBase,handle,getHandle) > >
NodePtr_set;
Note that elements are NodePtrs, but the index is based on NodeBase. This is explained at http://boost.org/libs/multi_index/doc/advanced_topics.html#advanced_key_extr... It is possible that you missed that part.
Regards Tal Agmon
Best regards, Joaquín M López Muñoz Telefónica, Investigación y Desarrollo