2017-09-14 4 views
-1

위해 중괄호 동봉 초기화 목록을 변환 할 수 없습니다 내 아이 라이프 라이저 목록은?나는 다음과 같은 설정을 한 표준에서 표준 : : 쌍 ::지도

+0

:

당신은, 그러나, 캡처하고 현재이 TransTable 멤버를 초기화 인스턴스를 저장하는 람다를 사용할 수 있습니까? 그것은 정의되지 않았으므로 오류가이 것으로부터옵니다. –

+0

죄송합니다. 포함하기를 잊어 버렸습니다. – Reza

답변

3

질문에 MCVE이 누락되었지만 오류 메시지가 분명합니다. reactionstd::function<void()>의 typedef 인 것 같습니다. &Node::connect과 같은 멤버 함수 포인터는 std::function<void()>으로 변환 할 수 없습니다. 후자의 경우에는 실제로 함수를 호출 할 매개 변수 this이 부족하기 때문입니다. "반응은"무엇

const std::map<std::pair<Status, Event>, reaction> TransTable = { 
    {{DISCONNECTED, CONNECT}, [this] { connect(); }}, 
    {{CONNECTING, RECEIVE}, [this] { receive(); }} 
};