청취자/콜백 클래스를 코딩하려고 시도하지만 콜 메소드에서 I get Declaration type contains unexpanded parameter pack 'Args'
입니다. 나는대로 전화를 걸 : 내가 인수의 다른 수 많은 호출 방법을 만들 수 있습니다 listeners.call (&ListenerType::myCallbackMethod, arg1, arg2, etc);
선언 유형에 확장되지 않은 매개 변수 팩 'Args'가 포함되어 있습니다.
좋아,하지만 난 단지 할 수 있다면 하나의 방법은
template <typename ...Args>
void call (void (ListenerClass::*callbackFunction) (Args), Args && ...value) // Compiler error: Declaration type contains unexpanded parameter pack 'Args'
{
auto iter = listeners.begin();
while (iter != listeners.end())
{
if(auto p = iter->lock())
{
(p->*callbackFunction) (std::forward<Args>(value)...);
++iter;
}
else
iter = listeners.erase(iter);
}
};
어떤 제안이 더 좋다? 감사합니다.
오류 메시지에 모두 나와 있습니다. 'Args'라는 확장되지 않은 매개 변수 팩을 가진 선언은 어디에 있습니까? 그것을 확장하십시오. – Barry
수평 스크롤 막대를 피하기 위해 다시 형식을 지정하려고 시도했지만 인수의 이름이 변경되었으므로 정답이 무효화됩니다. 나는 뒤로 물러났다. –
제쳐두고, 당신의 디자인은 몹시 나쁜 생각입니다. 전달 참조가 그렇게 작동하지 않습니다. – Yakk