重複の可能性:
void ポインター: C と C++ の違い
こんにちは、次の機能があります。
void task2(int a)
{
printf(" Task 2 running..\n");
sleep(2);
printf(" Task 2 exiting..\n");
}
thpool_add_work(threadpool, (void*)task2, (void*)a);
int thpool_add_work(thpool_t* tp_p, void *(*function_p)(void*), void* arg_p)
{
// some code here
}
上記のコードは C ではうまく機能しますが、C++ ではコンパイルできません。次のエラーが表示されます。
error: invalid conversion from ‘void*’ to ‘void* (*)(void*)’
error: initializing argument 2 of ‘int thpool_add_work(thpool_t*, void* (*)(void*), void*)’
このエラーの理由がわかりません。ファイル拡張子を CPP に変更してコンパイルすると、このエラーが発生する理由はわかりますか?