template<class TClass,class TPar>
class CExecutor
{
public:
void setFunction(ULONG (TClass::*pFunc)(TPar*))
{
this->pFunc=pFunc;
}
void ExecuteFunc(TPar params[])
{
TClass::*pThreadFunc(¶ms[0]);//error C2064: term does not evaluate to a function taking 1 arguments
}
private:
ULONG (TClass::*pFunc)(TPar*);
};
class test
{
public:
test()
{
Ex.setThreadFunction(&test::TestFunc);
}
void ExecTestFunc()
{
TestFuncParams par[1];
par[0].bBolean=true;
par[0].nInteger=50;
par[0].ThreadNumber=10;
Ex.ExecuteFunc(par);
}
private:
ULONG test::TestFunc(TestFuncParams* pPar)
{
return 0;
}
CExecutor<test,TestFuncParams> Ex;
}; |