Ошибка: аргумент типа "void (opca_hello ::) ()" не соответствует "void * (*) (void *)" -- c++ поле с участием linux поле с участием pthreads пол Связанный проблема

error: argument of type “void (opca_hello::)()” does not match “void* (*)(void*)”


0
vote

проблема

русский

Я написал очень простой код для резьбы. Поскольку я очень новый для этого, я понятия не имею об ошибке.

 <код> class opca_hello {  public: void hello(); }  void opca_hello::hello()  { printf ("hello  "); }   int main(int argc, char **argv) { opca_hello opca; pthread_t thread1, thread2; pthread_create( &thread1, NULL, opca.hello, NULL); pthread_join( thread1, NULL); return 0; }   

Ошибка: аргумент типа "void (opca_hello ::) ()" не соответствует "void * (*) (void *)"

Английский оригинал

I have written a very simple code for threading. Since I am very new to this, I have no idea about the error mentioned.

class opca_hello {  public: void hello(); }  void opca_hello::hello()  { printf ("hello  "); }   int main(int argc, char **argv) { opca_hello opca; pthread_t thread1, thread2; pthread_create( &thread1, NULL, opca.hello, NULL); pthread_join( thread1, NULL); return 0; } 

error: argument of type "void (opca_hello::)()" does not match "void* (*)(void*)"

</div
        
         
         

Список ответов

3
 
vote
vote
Лучший ответ
 

C ++ Вызывы членов функции должны пройти указатель на это вместе с остальными аргументами.

Так, чтобы использовать темы записи, как это:

 <код> static void *start(void *a) {     opca_hello *h = reinterpret_cast<opca_hello *>(a);     h->hello();     return 0; }  pthread_create( &thread1, NULL, start, &opca);   

PS:

Если вам нужно пропускать параметры методу, сделайте что-то подобное (например):

Struct Threaddetails { OPCA_HELLO * OBJ; int p; };

 <код> static void *start(void *a) {     struct threadDetails *td = reinterpret_cast<struct threadDetails *>(a);     td->obj->hello(td->p);     delete td;     return 0; }   

Тогда:

 <код> struct threadDetails *td = new struct threadDetails; td->obj = &opca; td->p = 500; pthread_create( &thread1, NULL, start, td);   
 

C++ calls to member functions need to pass a pointer to this along with the rest of the arguments.

So to use threads write code like this:

static void *start(void *a) {     opca_hello *h = reinterpret_cast<opca_hello *>(a);     h->hello();     return 0; }  pthread_create( &thread1, NULL, start, &opca); 

PS:

If you need to pass parameters to the method do something like this (for example):

struct threadDetails { opca_hello *obj; int p; };

static void *start(void *a) {     struct threadDetails *td = reinterpret_cast<struct threadDetails *>(a);     td->obj->hello(td->p);     delete td;     return 0; } 

Then:

struct threadDetails *td = new struct threadDetails; td->obj = &opca; td->p = 500; pthread_create( &thread1, NULL, start, td); 
</div
 
 
 
 

Связанный проблема

23  Почему я не могу открыть видео AVI в OpenCV?  ( Why cant i open avi video in opencv ) 
Я только что написал простой пример чтения видео с OpenCv2.3.1, но кажется, что я не могу открыть видео AVI в любом случае: ( <Код> VideoCapture capture("gui...

2  Новый DataType, который может иметь количество до 100 цифр  ( New datatype which can have numbers upto 100 digits ) 
Примечание. Это был вопрос интервью и может не иметь фактического случая использования в настоящее время Вопрос должен был разработать класс, который может ...

0  Проблема дизайна - создание шрифта Global (C ++, Marmalade)  ( Design issue making a font global c marmalade ) 
У меня есть проект Marmalade C ++, где встроенный в шрифте не масштабируется на экран. Чтобы справиться с этим вопросом, я делаю пользовательский шрифт, котор...

-1  Мусор с указателями в классе, C ++  ( Garbage with pointers in a class c ) 
Я использую Borland Builder C ++. У меня есть утечка памяти, и я знаю, что это должно быть из-за этого класса, который я создал, но я не уверен, как это испра...

0  Как получить несколько наборов результатов с Poco :: Data?  ( How to fetch multiple result sets with pocodata ) 
Я прочитал Poco :: Руководство пользователя данных и упоминается, что Библиотека имеет поддержку нескольких наборов результатов. Существует пример для этой ...

1  Не можете получить программу Math C ++ для работы [дубликата]  ( Cant get math c program to work ) 
<в сторону CLASS = "S-NEWACTS S-WELTIVE__info JS-Post-New Imide MB16« Роль = «Статус»> Этот вопрос уже есть ответы здесь : ...

1  C ++ - утечка памяти, вызванная использованием размещения New Over * этот указатель?  ( C memory leak caused by using placement new over this pointer ) 
Как известно, размещение New просто строит объект без выделения любой памяти. Также все члены в классе <Код> 5.5.10 являются объектами вместо указателей, хот...

0  Использование аргументов Makefile без Foo =  ( Using makefile arguments without foo ) 
У меня есть makefile, который я использую для компиляции одного файла. Когда мне нужно пройти аргумент, я использую цель = TargetFile. Сценарий принимает ар...

6  Теоретически, находит_енди параллельно?  ( In theory is find end parallelizable ) 
В настоящее время я работаю над open -Под предложению Для достижения параллельной функциональности проекту я работаю, но я столкнулся с дорожным блоком с f...

0  Проблемы с повышением :: ptr_vector и Boost :: любой  ( Problems with boostptr vector and boostany ) 
Хорошо, так что я сомневался, я хочу знать, если это возможно: Я использую базу данных, с общими данными (строки, ints, bools и т. Д.). Всякий раз, когда об...

4  Преобразовать фильм в Openni * .oni видео  ( Convert movie to openni oni video ) 
the библиотека Kinect Openni использует пользовательский формат видеофайла для хранения видеороликов, которые содержат информацию RGB + D. Эти видео имеют р...

7  GLREADPIXELS () Устанавливает ошибку GL_inValid_Operation  ( Glreadpixels sets gl invalid operation error ) 
Я пытаюсь реализовать цвет выбора с FBO. У меня есть многосмысленные FBO (FBO [0]), которые я использую для визуализации сцены, и у меня нет многоспущенных FB...

1  Opencv Изображение Цветовое пространство Преобразование с использованием CVTColor  ( Opencv image color space transformation using cvtcolor ) 
Я использую ниже OpenCV API для преобразования цветового пространства: <код> cvtColor(<input mat>, <output mat>, COLOR_RGB2RGBA); Однако выходное изобра...

2  ODBC и NLS_LANG  ( Odbc and nls lang ) 
Допустим, я создал две разные исполняемые файлы программы, например, в C ++. По какой-то причине две программы внутреннее представление текста отличаются др...

1  STD :: CIN непосредственно к функции  ( Stdcin directly to a function ) 
Недавно я наткнулся на следующую часть кода. Я не знаю, имеет ли это какой-либо смысл, я просто пытаюсь его понять: <код> object Gender extends Enumeration ...




© 2021 www.qaru.top All Rights Reserved. Q&A House все права защищены


Licensed under cc by-sa 3.0 with attribution required.