コールメソッドではリスナー/コールバッククラスをトリングしていますが、私はget Declaration type contains unexpanded parameter pack 'Args'
です。私のように呼び出したい : listeners.call (&ListenerType::myCallbackMethod, arg1, arg2, etc);
宣言型に拡張されていないパラメータパック 'Args'が含まれています
[OK]を、私は引数の数が異なる多くのコール・メソッドを作成することができますが、私は1つの方法だけを行うことができます場合は、任意の提案
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