私はC ++に少し慣れていないので、私の問題について説明させてください。CSubcriber というクラスがあります。このクラスの主な目的は、いくつかの型といくつかの引数のコールバック関数を実行することです。たとえば、コールバックは次のようになります。
typedef void (*cb1)(void)
typedef int (*cb2)(int, int)
typedef char (*cb3)(int, int, void);
クラス自体は次のとおりです。
template <class CallbackType>
class CSubscriber {
public:
CSubscriber();
virtual ~CSubscriber();
CallbackType (*m_callback_newWay)(void *params);
void (*m_callback)(void *params);
int (*m_callback_int)(void *params);
void *m_cb_params;
int execute_cb();
void *m_params;
CSubscriber(void (*callback)(void *params), void *cb_params);
CSubscriber(int (*callback)(void *params), void *cb_params);
};
CSubscriber::CSubscriber(void (*callback)(void *params), void *cb_params){
m_callback = callback;
m_cb_params = cb_params;
}
CSubscriber::CSubscriber(int (*callback)(void *params), void *cb_params){
m_callback_int = callback;
m_cb_params = cb_params;
}
私の主な問題は、コールバックへのすべての変数引数を処理するコンストラクターの書き方です。特定の瞬間にオブジェクトを構築した後、コールバックが発生する場合があります。次に例を示します。
typedef int (*callback)(void *params);
CSubscriber s(callback, params);
また
typedef void (*callback2)(void *params, int arr, char *ptr);
CSubscriber s(callback, params, arr, ptr);
今、呼び出し
s->m_callback()
コンストラクターに渡したすべての引数でコールバックを実行したい。コールバック関数に渡される引数の数が異なるごとに、10 個の異なるコンストラクターを作成することは避けたいと思います。することは可能ですか?