Внутри класса я объявил функцию потока. Я использовал статическое ключевое слово, потому что без статического ключевого слова оно не работает с классом.
Но если тип функции статический, я не смог бы получить доступ к функции-члену и открытым переменным класса
#include <iostream>
#include <pthread.h>
using namespace std;
class Base{
private:
static void * fpga_read(void*); // Thread function
void foo_2();
public:
/* member variables */
void foo(void);
protected:
int b;
};
void Base::foo(void)
{
pthread_t id;
pthread_create(&id, NULL,fpga_read,NULL);
cout << "\nInside base class" << endl;
}
void * Base::fpga_read(void *p)
{
cout << "\nInside thread function " << endl;
// error: invalid use of member ‘Base::b’ in static member function
cout << "Value of B inside thread class" << b;
int b;
}
int main()
{
Base a;
a.foo();
pthread_exit(NULL);
return 0;
}
Любое тело подскажите, как использовать функцию потока без статического ключевого слова. так что я могу получить доступ ко всем переменным класса.