2013-12-23 6 views
-2

을 나는이 :::지도

enum Screens 
{ 
    INVENTORY, 
    STUFF, 
    CRAFTING, 
    GAMESCREEN, 
    NONE 
}; 

typedef struct s_action  
{ 
    s_action() : _screen(NONE), _compartment(NULL){}; 
    Screens  _screen; 
    Compartment *_compartment; 
}    s_action; 

std::map<Screens, std::map<Screens, void (GestionClick::*)(s_action&, s_action&)> > _correlationTable; 

GestionClick의 멤버 함수를 호출하기 위해 구문이 무엇입니까?

Screens a; 
Screens b; 
(*_correlationTable[a][b])(action1, action2); 

하지만 내가보기 엔 당신이 경우 (대신 <functional> 헤더에 정의 std::function (그리고 아마도 std::bind) (가독성을 위해) 일부 using 선언을 사용하는 것이 좋습니다거야 :

+1

'(GC 것은 * _ correlationTable [_screen1] [_ 화면 2]) (s_action1, s_action2)' – 0x499602D2

+0

나는이 구문 질문 호출 할 것이다, 그것은 접근에 대한 기본적인 이해 더 지도, 및 호출 함수. http://www.cplusplus.com/reference/map/map/operator[]/ 및 http://stackoverflow.com/questions/1043034/what-does-void-mean-in-c-c-and-c를 확인하십시오. – tinkertime

답변

0

당신은 사용할 수 있습니다 C++ 11)를 사용하여 :.

using callback  = std::function<void(s_action&, s_action&)>; 
using screens_map = std::map<Screens, callback>; 
std::map<Screens, std::map<Screens, screens_map> _correlationTable;