Указатель на функцию как член класса

В чем разница между функцией класса и глобальной функцией в отношении указателей на функции в C ++? Я спрашиваю, поскольку метод Windows CreateThread, похоже, не принимает функцию, в которую входит код потока, если функция является членом класса.

Я могу передать функцию (в которую входит код потока) в сообщение CreateThread, когда это глобальный метод, но как только я сделаю его членом класса, я получаю ошибку «аргумент типа [макет метода] несовместим с параметром типа LPTHREAD_START_ROUTINE «. ClassName :: * теперь находится посередине; это влияет на это?

Как это обойтись?

лямбда-выражения в C ++ 11 или boost :: bind перед этим — опубликуйте ошибочный код, и мы покажем вам, как   —  person Ghost    schedule 14.08.2013

Сигнатура возможных потоковых функций должна быть точно согласована, Win32-API — это чистый C API, не предназначенный для работы с C ++ — классами.   —  person Ghost    schedule 14.08.2013

@doctorlove, результат не будет совместим с указателем на функцию, взятым CreateThread.   —  person Ghost    schedule 14.08.2013

В C ++ 11 вы можете подумать о переходе на стандартную библиотеку потоковой передачи. Тогда это что-то вроде thread([this]{member();}), а не тарабарщина в правильном ответе, с переносимостью в качестве бонуса.   —  person Ghost    schedule 14.08.2013

@MikeSeymour, Хорошая мысль, я не знаю, почему это не пришло мне в голову. Я поставлю это на видное место.   —  person Ghost    schedule 14.08.2013

Источник: ledsshop.ru

Стиль жизни - Здоровье!