同じ型のコールバック関数を受け取るクラス テンプレートを定義したいと考えています。何かのようなもの:
typedef template<class T> bool CallbackFn( T x );
template<class T> class MyClass
{
public:
MyClass() {}
~MyClass() {}
void addCallbackFn( CallbackFn* fn ) { callbackFn = fn; }
private:
CallbackFn* callbackFn;
};
そして、それは次のように使用されます:
bool testFunctionInt(int x) { return true; }
bool testFunctionString(std::string x) { return true; }
MyClass<int> a;
a.addCallbackFn( testFunctionInt );
MyClass<std::string> b;
b.addCallbackFn( testFunctionString );
残念ながら、コールバック関数は を介して関数テンプレートとして定義することはできませんtypedef
。
これを行う別の方法はありますか?