Я пытаюсь понять, что ты пытаешься сделать. Это выглядит слишком сложным для чего-то типа потока. Не могли бы вы опубликовать определение класса?
Начните с удаления приведения типа аргумента процесса к CreateThread ():
this->hThread = ::CreateThread (NULL, 0,&runProcess, (void *)(this_param), 0, &this->hThreadId);
Если это не компилируется, вы делаете что-то не так! Никогда не приводить указатель на функцию! Если компилятор жалуется, что вам нужно изменить свою функцию, не пытайтесь отбрасывать ошибки! В самом деле! Вы только сделаете это хуже для себя! Если вы сделаете это снова , они * придут к вам домой и сделают ... Посмотрим, как вам это понравится! Серьезно, не делай этого снова.
Кстати, в Process () я думаю, что было бы более уместно сделать что-то вроде:
assert(::GetCurrentThreadId() == hThreadId);
Но если вы объявите его закрытым, он все равно должен быть доступен только вашему классу CThread, и поэтому это не должно быть проблемой. Утверждения хороши, хотя!
* Непонятно, кто такие они , но понятно, что бы ни сделали они , это не будет приятно!