CSum::fileProc(file1)
- это выражение, которое вызывает функцию и дает вам значение, которое функция возвращает в качестве значения выражения.Вы пытаетесь получить адрес этого значения, что вы не можете, и это не будет делать то, что вы хотите.
&CSum::fileProc
даст вам указатель на функцию, но он не имеет правильногоподпись для использования с pthreads.Поскольку pthreads - это библиотека C, она имеет очень упрощенный интерфейс.Лучше всего для C ++ использовать библиотеку C ++ более высокого уровня, которая использует pthreads (по крайней мере, для Unix), например, потоки Boost.
Если по какой-то причине вы не можете этого сделать, вам нужно написатьваши собственные обертки.Чтобы вызвать вашу функцию в отдельном потоке, вам нужно написать что-то вроде:
class CSum {
...
static void fileProcWrapper(void* param) {
const char* fileName = (const char*) param;
fileProc(fileName);
}
...
и вызвать ее с помощью
pthread_create((&t2, NULL, &CSum::fileProc, (void*) file1.c_str());
Это просто даст вам вызов, ум, результатвыбрасывается с этим кодом.Если вы хотите получить результат с помощью pthread_join, вам нужно проделать еще немного работы.