>The obvious difference is that the Thread Function I am trying to convert is using a windows calling convention and is returning a unsigned long. I want my Create function to have the flexiblity to handle, for the most part any type of thread function thrown at it
I'm not sure you can do that. Can't you just have the function you pass to CreateThread call another function? Maybe something along the lines of:
Code:
struct FooStruct
{
int a, b, c;
};
void FooThreadProc(int a, int b, int c)
{
//...
}
DWORD WINAPI FooThreadStartProc(LPVOID params)
{
FooStruct* fs = reinterpret_cast<FooStruct*>(params);
FooThreadProc(fs->a,fs->b,fs->c);
}
And your class isn't a singleton. There isn't even a static function in it