2016-06-05 8 views
1

은 제가 boost-fusion 사용한C++지도

typedef boost::AlterinativeToHana::map< make_pair<"abcd",ABCDType>, 
       make_pair<"efgh",EFGHType>, 
       make_pair<"ijkl",IJKLType> 
       > stringToTypeMap; 

같은 것을 만들 수 부스트 라이브러리에 boost-hana에 대한 대안이 있습니까,하지만 적절한 해결책을 찾을 수 없습니다 나의 유스 케이스 즉, 문자 스트링을 타입 매핑으로 사용한다. 내가 std::type_index 생각

+1

, 왜 당신이 하나의 대안이 필요합니까? –

+0

@ 루이즈 디온 (LouisDionne) ... 내 직장의 플랫폼 컴파일러는 여전히 부스트 1.56을 사용 중이며 2018 년 초까지 업그레이드 할 계획이 없습니다. – Recker

+0

아, 그래. 그러나 최신 컴파일러를 사용하고 있다면 (아마도 플랫폼의 컴파일러를 사용하는 경우는 아닙니다) Boost 배포를 업데이트하지 않고 Hana 만 설치할 수도 있습니다. –

답변

0

는 당신이 필요로하는 무엇을 :

#include <iostream> 
#include <typeindex> 
#include <map> 

class A 
{}; 

class B 
{}; 

int main() 
{ 
    std::map<std::type_index, std::string> typesMap; 
    typesMap[typeid(A)] = "1111"; 
    typesMap[typeid(B)] = "2222"; 

    A instA; 
    B instB; 

    cout << "instA: " << typesMap[typeid(instA)] << "\n"; 
    cout << "instB: " << typesMap[typeid(instB)] << "\n"; 

    return 0; 
} 

출력 : 호기심에서

instA: 1111 
instB: 2222 
+0

실제로 언급 한 것과 반대되는 역 매핑이 필요했습니다. 'std :: string'에서 잘 정의 된 타입으로. – Recker

+0

'std :: map '를 만드는 것은 아무런 문제가되지 않는다. 이 예제는 이해하기 쉽기 때문에이'type-> string' 매핑을 만들었습니다. 실생활에서는'construction 함수 '처럼'std :: type_info'를 더 많이 사용해야합니다. –