Я хочу запустить метод struct в собственном потоке:
g_thread_new( "NewThread", mymethod , NULL)
Проблема в том, что программа компилируется, только если я установил метод на «статический»:
static gpointer mymethod(gpointer nrp) { puts(this->mystring) ; ... }
Но если я установлю метод на «статический», я не смогу получить доступ к переменным экземпляра структуры, например this-> mystring.
Есть ли способ использовать g_thread_new с методами класса И получить доступ к переменным экземпляра?
Что вы можете и должны сделать, это получить void*
в вашей статической функции в качестве параметра из потока. Тот void*
это объект, который вы хотите, чтобы его функция вызывалась. Просто приведите его к типу объекта и вызовите метод.
Также рассмотрите возможность использования boost::thread
,
Других решений пока нет …