Multimap и shared_ptr - PullRequest
       28

Multimap и shared_ptr

3 голосов
/ 10 апреля 2011

Я хочу отсортировать свои объекты в boost::multi_map, ссылаясь на некоторый индекс.Но я храню не чистые объекты, а завернутые в boost::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>::*)()’

1 Ответ

2 голосов
/ 10 апреля 2011

Изменение

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

до

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

Согласно документации должно работать.

...