2015-01-27 2 views
0

나는 std::forward_list을 가지고 있으며 variadic 유형 서명 (typename return_type, typename... Args)을 가진 클래스 인 Delegate (here에서 가져옴) 클래스를 가지고 있습니다.variadic 템플릿 클래스의 forward_list 만들기

나는 Delegate에서 std::forward_list을 만들고 싶습니다. 어떻게 그렇게 할 것입니까? 시도 :

std::forward_list<Delegate<void, typename...> >하지만 구문 오류가 발생합니다. 나중에이 목록에 추가하고 싶습니다. 나는이 목록들 (복수가 될 것임)이 함께 저장된 동일한 수의 매개 변수를 취하는 Delegate 유형만을 가질 것이라고 보장 할 수있다. 그러나 각 목록에는 다른 목록의 메서드와 다른 매개 변수를 사용하는 메서드 목록이있을 수 있습니다.

이 목록은 실제로 std::unordered_map 안에 있습니다.

+0

C++에서 가변 템플릿을 컴파일하는 방법으로 인해 불가능하다고 생각하기 시작했습니다. –

+1

컴파일에 실패한 최소한의 코드 예를 보여 주시겠습니까? (그리고 컴파일 에러입니다.) – Brian

답변

1

우선 목록이 값인지도 대신 unordered_multimap을 사용해야하는 것 같습니다.

그렇다면 STL 컨테이너에 형식을 조금이라도 저장하려는 경우 기본 클래스를 만들어 해당 기본 클래스에 대한 포인터로 저장해야합니다. 한 목록의 모든 값은 동일한 수의 매개 변수를 갖지만 매개 변수가 완전히 동일하다는 것을 지정하지 않았다고 언급했습니다.

+0

'unordered_map'과'unordered_multimap'의 차이점은 무엇입니까 –

+0

'unordered_map'에는 고유 키가 있습니다 – sbooth

+0

@KhanPower : 본질적으로 멀티 맵은 하나의 키에 대해 여러 개의 값을 저장할 수 있으며, 그 값들이 목록에 저장되는 것과 비슷합니다. 당신이 묘사하고있는 것과 꽤 비슷합니다. 간단합니다. –

관련 문제