Why do tasks have to be global variables?

Why is it that when we build our function that returns the DoneStatus has to be a global variable and cannot be a member function?

For instance:

AsyncTask::DoneStatus task(GenericAsyncTask* task, void* data) {

//Task goes here
return AsyncTask::DS_cont;

}

But it cannot be

AsyncTask::DoneStatus SomeClass::task(GenericAsyncTask* task, void* data) {

//Task goes here
return AsyncTask::DS_cont;

}

As when we try to build the GenericAsyncTask PT it does not allow this. As well there is no good way to make a standard pointer to a member function…

Any Ideas?

See this answer.