Мне нужно сделать метод в вызове класса другим методом в том же классе в новом потоке, но у меня есть некоторые проблемы. Я получаю ошибку компиляции: «« это »недоступно для статических функций-членов». Я сделал пример своей проблемы, так как я не могу опубликовать исходный код здесь.Как сделать метод вызова другого метода в том же классе в новом потоке?
В основном, я делаю объект своего класса (известный ниже как aClass
), тогда я вызываю метод, такой как do_stuff()
. Метод do_stuff()
использует pthread_create
для вызова метода print_number()
в новом потоке. Проблема в том, что когда я перехожу к компиляции, я получаю сообщение об ошибке, говоря, что я не могу использовать this
, потому что мой метод print_number()
является статическим. Если я не сделаю метод print_number()
статическим, то pthread_create
жалуется, что его не совместимый тип.
Я понимаю, почему я не смог использовать this
внутри самого метода print_number()
, так как он статичен и может быть вызван без объекта. Однако, в моем методе print_number()
, я не использую this
. Я использую указатель на объект, который я создал. В do_stuff()
Я использую this
, чтобы передать ссылку на объект, который я создал, на print_number
, но я не использую this
в print_number
. Поэтому я не понимаю, в чем проблема. Спасибо за помощь!
Ищите «метод класса pthread_create». Например, это может пролить свет на проблему: (http://stackoverflow.com/questions/7809987/c-how-to-define-a-class-method-as-a-start-routine-to -thread-with-pthread-lib) – MichaelGoren