指数提升 multi_index
Index with boost multi_index
如何使用 class(存储在 multi_index 中)的成员函数索引 boost::multi_index 容器,returns 是另一个容器的常量引用class?
我得到的错误是:
error C2440: 'specialization' : cannot convert from 'overloaded-function' to 'RetClass (__thiscall StoreMe::* )(void) const'
编辑 1:
这是我创建的类似代码的完整可验证片段,它有相同的错误,
#include "stdafx.h"
#include<multi_index_container.hpp>
#include<boost/multi_index/hashed_index.hpp>
#include<boost/multi_index/mem_fun.hpp>
class RetClass
{
int a, b;
};
class StoreMe
{
RetClass ex;
public:
void setId(RetClass a) {
ex = a;
};
virtual const RetClass& getId() const { return ex; }
};
typedef boost::multi_index_container<
StoreMe,
boost::multi_index::indexed_by<
boost::multi_index::hashed_non_unique<boost::multi_index::const_mem_fun<StoreMe, RetClass, &StoreMe::getId> >
>
> mi_storeMe;
int _tmain(int argc, _TCHAR* argv[])
{
return 0;
}
TIA
-R
使用boost::multi_index::const_mem_fun
.
根据 OP 的附加信息进行编辑:const_mem_fun
中指定的 return 类型必须 与您要使用的函数的类型完全相同用于索引。请注意您当前代码中的差异:
virtual const RetClass& getId() const;
const_mem_fun<StoreMe, RetClass, &StoreMe::getId>
因此,将 const_mem_fun
部分更改如下:
const_mem_fun<StoreMe, const RetClass&, &StoreMe::getId>
如何使用 class(存储在 multi_index 中)的成员函数索引 boost::multi_index 容器,returns 是另一个容器的常量引用class?
我得到的错误是:
error C2440: 'specialization' : cannot convert from 'overloaded-function' to 'RetClass (__thiscall StoreMe::* )(void) const'
编辑 1:
这是我创建的类似代码的完整可验证片段,它有相同的错误,
#include "stdafx.h"
#include<multi_index_container.hpp>
#include<boost/multi_index/hashed_index.hpp>
#include<boost/multi_index/mem_fun.hpp>
class RetClass
{
int a, b;
};
class StoreMe
{
RetClass ex;
public:
void setId(RetClass a) {
ex = a;
};
virtual const RetClass& getId() const { return ex; }
};
typedef boost::multi_index_container<
StoreMe,
boost::multi_index::indexed_by<
boost::multi_index::hashed_non_unique<boost::multi_index::const_mem_fun<StoreMe, RetClass, &StoreMe::getId> >
>
> mi_storeMe;
int _tmain(int argc, _TCHAR* argv[])
{
return 0;
}
TIA
-R
使用boost::multi_index::const_mem_fun
.
根据 OP 的附加信息进行编辑:const_mem_fun
中指定的 return 类型必须 与您要使用的函数的类型完全相同用于索引。请注意您当前代码中的差异:
virtual const RetClass& getId() const;
const_mem_fun<StoreMe, RetClass, &StoreMe::getId>
因此,将 const_mem_fun
部分更改如下:
const_mem_fun<StoreMe, const RetClass&, &StoreMe::getId>