2016-10-18 8 views
0

다른 클래스의 상수 참조를 반환하는 (multi_index에 저장되는) 클래스의 멤버 함수를 사용하여 boost :: multi_index 컨테이너를 어떻게 인덱싱 할 수 있습니까?boost with multi_index

내가 오류는 다음과 같습니다

error C2440: 'specialization' : cannot convert from 'overloaded-function' to 'RetClass (__thiscall StoreMe::*)(void) const' 

EDIT1 :

이 같은 오류가 내가 만든 비슷한 코드의 완전하고 검증 조각,

#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

답변

2

boost::multi_index::const_mem_fun을 사용하십시오.

편집 OP의 추가 정보 후 : const_mem_fun에 지정된 반환 형식을 인덱싱에 사용할 함수의 것과 정확히 같은 수 있습니다. 다음과 같이

virtual const RetClass& getId() const; 
const_mem_fun<StoreMe, RetClass, &StoreMe::getId> 
그래서

에서, const_mem_fun 부분을 변경 : 현재 코드의 차이를 참고

const_mem_fun<StoreMe, const RetClass&, &StoreMe::getId> 
+0

을 예, 이미 사용하고 이잖아,이 정확히 내가 – codeworks

+0

내 기능을 사용하고 무엇인가 is : 가상 상수 RetClass & getId() const {return Id; } 내 사용은 다음과 같습니다 \t \t 부스트 :: multi_index :: hashed_non_unique <부스트 : multi_index :: const_mem_fun > 그리고 그게 내가 오류가 발생합니다. – codeworks

+0

@ Joaquín M López Muñoz 질문에 추가 한 검증 가능한 샘플을 만들었습니다. 티아! – codeworks